《信号与系统》课程设计——回音的产生与消除
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《信号与系统》课程设计——回音的产生与消除班级:光电一(6)班
姓名:骆骏
学号:2010051060023
全部源程序如下:
[x,fs,bits]=wavread('xiyangyang');
figure(1);
subplot(3,1,1);
plot(x(1:65000));
title('原始信号');
y=fft(x);
subplot(3,1,2);
plot(abs(y));
title('幅值');
subplot(3,1,3);
plot(angle(y));
title('相位');
sound(x,fs);
pause(10)
x1=x(1:65000);
x2=x(1:65000);
x1=[x1,zeros(1,10000)];
x2=[zeros(1,10000),0.7*x2];
y=x1+x2;
figure(2);
subplot(3,1,1);
plot(y(1:65000));
title('回声');
y1=fft(y);
subplot(3,1,2);
plot(abs(y1));
title('幅值');
subplot(3,1,3);
plot(angle(y1));
title('相位');
sound(y,fs);
pause(10)
b=1;
a=zeros(1,10000);
a(1)=1;
a=[a,0.7];
z1=filter(b,a,y);
z2=fft(z1);
figure(3);
subplot(3,1,1);
plot(abs(z2));
title('滤波幅值');
subplot(3,1,2);
plot(angle(z2));
title('滤波相位');
subplot(3,1,3);
plot(z1(1:65000));
title('滤波信号');
sound(z1,fs);
程序简要分析:
首先利用声卡或软件(本人用的是格式工厂)录下一段采样率为22050Hz的wav格式的音频文件,并将其复制到Matlab的work工作区,取名“xiyangyang”。然后利用wavread函数读入并将其一维数组的值赋给变量x,经size(x)测得其长度为66230(x取前65000位)。
利用图形窗口subplot函数将figure(1)分成3个绘图区,以便于分别用plot函数将原始音频的原始信号,幅值和相位在figure(1)上输出。相关函数有title,用于标注图形名称; fft用来计算离散傅里叶变换,此函数将序列x的快速离散傅里叶变换的结果存到向量y中,即其幅值;angle函数用于返回向量y的弧度,即一维复合元素的向量矩阵。最后利用sound命令把原始音频文件输出。
然后分别把x赋x1和x2,并分别在x1的最后和x2的最前加10000个0,且设x2的回音衰减系数为0.7。使原始信号产生一个10000的时延和0.7的衰减率并将其进行叠加赋给y,而输出的y就实现了x1和x2的叠加,即产生回音的过程,再分别将y的回声,幅值和相位用相似的处理方法输出在figure(2)上。
最后是回音的消除过程,此过程利用了一个关键的一维数字滤波滤波器函数filter,即建立一个一维差分方程,最后反求出原始信号x,即程序中所指的z1。“z1=filter(b,a,y)”的意思是使b*z1=a*y,而a,b,y和z1均可以是向量(实过程为“a(1)*z1(n)+a(2)*z1(n-1)+ a(3)*z1(n-2)+…..=b(1)*y(n)+b(2)*y(n-1)+b(3)*y(n-2)+…..“),最后输出的是z(n)。执行此语句后,z1(n)+0.7*z1(n-10001)=y(n),而显然得到的z1(n)就是叠加信号y 减去原来的回音x2后所得的原始信号,即x。
注:
1.本程序包含三个sound命令,应利用pause函数实现其先顺序的播放,否则播放时效果
不好甚至混乱。
2.本程序只设计了一个回音信号x2,也可以按相似方法多设计几个回音信号x3,x4等,
即实现其回音次数的控制。只是注意其维数必须相同,否则不能相加,在最后回音消除的时候再按相似方法去掉回音即可。
3.关于回音间隔,可通过改变其时延N来控制;至于回音大小,通过改变回音的回音衰减
系数即可。
4.在录取的音频不能太大,否则易造成程序执行时间过长,特别是filter函数的计算过程,
一旦过长就极易死机。
5.本程序参考了一些网上相关的回音的产生与消除的程序。
感想:
信号与系统是一门理论与实践紧密结合的课程,通过本次课程设计,增强了自己的实际动手能力,上网查资料以及自学能力。