结果分析:k的值为50;所得结果与4求得的一样 深入题
6.写出一个MATLAB函数来完成重叠相加的快卷积。这个函数应当以单位冲激响应h,数据向量x和分段长度作为输入,而且该函数应容许数据向量x是任意长,分段长度L是比滤波器长度大的任意整数。函数的第一行应读出 function y=oafilt(h,x,L)
利用这个函数做5,并用这个结果与利用conv直接卷积所得结果进行比较,从而证实这个函数运行无误。 答:
function y=oafilt(h,x,L); m=length(x); k=ceil(m/L); for j=1:k;
if (j-1)*k §8.7通过逆滤波器的回声消除 目的 这个练习要研究从一段语音信号的记录中消除回声的问题。 相关知识 着手这个练习之前,需要装入语音文件lineuo.mat。如果这个文件已经在你的MATLABPATH的某个地方,就键入 >> load lineup.mat 将数据装进MATLAB中去。一旦数据装入MATLAB,语音波形就存入变量y中。因为这段语音是用采样率8192Hz录制的,所以键入 >> sound(y,8192) 就能听到语音,应该听到词组“line up”并有回声。由向量y表示的y[n]具有形式为 y[n]?x[n]?ax[n?N] (2.4) 其中x[n]是未被污染的语音信号,它被延时N个样本且在幅度上减小a?1倍后又反过来加到x[n]上去。这对于像从一面墙那样的吸收反射回来的信号所形成的回声来说,是一个合理的模型。 本练习都用回声的眼是指N=1000,回声衰减a?0.5。 基本题 1. 本练习用线性滤波消除回声。因为回声可用(2.4)式的线性系统表示,试求并 画出(2.4)式回声系统的单位冲激响应,并将它在0?n?1000内的值存入向量he中。 代码: 2.考虑由下面差分方程描述的回声消除系统 z[n]?az[n?N]?y[n] (2.5) 式中y[n]是输入,z[n]式回声消除的输出。根据导出关联z[n]和x[n]的总差分方程证明, (2.5)式确实是(2.4)式的逆。对于总差分方程,z[n]?答:是 中等题 3.(2.5)式的回声消除系统其单位冲激响应是无限长的。假设N=1000,a?0.5,利用filter,在输入为单位脉冲(由d=[1 zeros(1 4000)]给出)时计算系统的单位冲激响应,并利用这4001个单位冲激响应的样本近似值存入her中。 代码: x=zeros(1,1001); x(1)=1; x(1001)=0.5; a=x; b=1; d=[1 zeros(1,4000)]; her=filter(b,a,d) 4. 利用z=filter(1,a,y)实现这个回声消除系统,其中a是由(2.5)式导出的系数向 量。利用plot画出输出,同时利用sound听听输出。应该不再听到回声。 代码: load lineup.mat x=zeros(1,1001); x(1)=1; x(1001)=0.5; a=x; z=filter(1,a,y) plot(z); sound(z); x[n]是一个真实的解吗? 5. 计算将回声系统(2.4)式与回声消除系统(2.5)式级联后的总单位冲激响应,这 可将he和her卷积,并将卷积结果存入hoa中。画出总单位冲激响应。应注意,这个结果不是一个单位脉冲。已经计算出的her是he的逆,为什么结果会是这样呢? 代码: load lineup.mat x=zeros(1,1001); x(1)=1; x(1001)=0.5; a=x; z=filter(1,a,y) x=zeros(1,1001); x(1)=1; x(1001)=0.5; a=x; b=1; d=[1 zeros(1,4000)]; her=filter(b,a,d) hoa=conv(he,her) 深入题 6.假设已知y[n],但是不知道回声时间N的值,或者不知道回声的幅度a,基于(2.4)式你能确定一种估计这些只得方法吗? 提示:考虑这个回声系统的输出y具有如下形式: 并考虑信号Ryy[n]?y[n]?x[n]?(?[n]?a?[n?N]) y[n]?y[?n],即y[n]的自相关函数,并常用于回声时间的估计。 用Rxx[n]写出Ryy[n]并画出Ryy[n]。在计算之前必须将y[n]截断,以便保持Ryy[n]在限制内。将会发现,当y截断后,自相关函数的许多性质仍然成立。另外,用改变N,alpha和NX试试下面的简单回声问题: >> NX=100; >> x=randn(1,NX); >> N=50; >> alpha=0.9; >> y=filter([1 zeros(1,N) alpha],1,x); >> Ryy=conv(y,fliplr(y)); >> plot([-NX+1:NX-1],Ryy) 当装入lineup.mat时,也同时装入另外的两个向量。向量y2含有词组“line up”,并有不同的回声时间N和不同的回声幅度a。向量y3含有两个回声的同样一个词组,每一个都具有各自的回声时间和幅度。你能对y2估计出N和a吗?对y3估计出N1,a1,N2和a2吗?