北邮《数字信号处理》Matlab实验——梳状滤波器的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验题目3:梳状滤波器的应用
实验目的:
录制一段自己的话音,时间长度及取样频率自定;对该段声音加入一次反射、三次反射和无穷多次反射。
试验内容:
1、对试验原理的说明
回声可以认为是由原始声音衰减后的多个延迟叠加组成的,因此回声可以用延迟单元来生成。
x(n)表示原始声音信号,a为衰减系数,T为延迟周期,回声信号Y(n)=X(n)+a*x(n‐T)+a^2*x(n‐2T)+……+a^k*x(n‐kT)。
Z变换后的系统函数H(z)可由梳状滤波器实现。
本实验用MATLAB中的filter(b,a,x)函数可用来仿真差分方程
a(1)*y(n)=b(1)*x(n)+b(2)*x(n‐1)+...+b(nb+1)*x(n‐nb)‐a(2)*y(n‐1)‐...‐a(na+1)*y(n‐na)。
2、在同一张图上,绘制原声音序列x(n)、加入一次反射后的声音序列x1(n)、加入三次反射后的声音序列x3(n)和加入无穷多次反射后的声音序列x I(n)。
[x, fs] = wavread('a.wav');
% sound(x, fs);
a = 0.6; T = 0.2;
y1 = filter([1, zeros(1,T*fs-1), a], 1, x);
% sound(y1, fs); wavwrite(y1, fs, 'echo1.wav');
y2 = filter([1, zeros(1,T*fs-1), a, zeros(1,T*fs-1), a^2, zeros(1,T*fs-1), a^3], 1, x);
% sound(y2, fs); wavwrite(y2, fs, 'echo2.wav');
y3 = filter(1, [1, zeros(1,T*fs-1), a], x);
% sound(y3, fs); wavwrite(y3, fs, 'echo3.wav');
plot(y3, 'm');
hold on; plot(y2, 'r');
hold on; plot(y1, 'g');
hold on; plot(x, 'b');
其中蓝色为原声音序列x(n),粉红色为加入一次反射后的声音序列x1(n),绿色为加入
三次反射后的声音序列x3(n),红色为加入无穷多次反射后的声音序列x I(n)。
3、结合上述各序列,分析延时、衰减系数对回声效果的影响
延时不变时,衰减系数a从零增大到1的过程中,回声效果由差变好再变差。
a很小时,
几乎听不到回声,a在0.5(±0.1)时,回声效果最明显,a接近1时,声音变得很不清晰,
几乎不可识别。
衰减系数不变时,延时T从零增大的过程中,回声效果由差变好再变差。
T
接近0时,可以听到回声,但多次回声的层次感不清晰。
0.1s<T<1s时,回声效果最好,多
次回声层次感强。
T>1s时,回声感不强,感觉只是单纯地对输入声音的重复。