- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计FIR滤波器去除噪音
1.实验任务:
写一个简单的M-文件去除SunshineSquare.wav文件中干扰音调,以使音频文件听起来自然。
2.要求
请独立完成代码,但可以和他人讨论思路。
需要提交的内容(三者压缩为一个文档):
1.干净的wav文件。使用wavwrite(yy, filename, fs);保存文件。
2.matlab代码(m文件)
3.实验报告:
(a)一两句话描述该实验的内容
(b)简单描述你是怎么做的。列一个表,列出每个音调对应的Hz为单位的频率,数字频率和B;干净wav文件的声谱图;如果你额外加了些什么操作,请高亮指出。这部分半页纸即可。
(c)一两句话写出结论。
实验报告文档名为“班号-学号-姓名”,只交电子版。
一周内,提交给各班学习委员,学习委员再打包提交给我,ywang@mail.hust.edu.cn
3.实验方法:
需要两个步骤去除干扰音调。第一步,确定干扰音调的频率;第二步,滤掉这些频率。
3.1确定频率
以下的Matlab代码读取wav文件,计算它的幅度谱:
[xx, fs] = wavread(SunshineSquare);
xx = xx;
figure(1)
xxSpectrum=abs(fft(xx,N));
plot(xxSpectrum);
注意:N是FFT的点数,应当是2的幂次,而且应该足够大,需要你自己确定是多少,可尝试不同的N,看看幅度响应的不同。因噪声加在音频文件的最后,所以幅度响应只需要查看后面时段的即可,通过画出幅度响应来确定有几个幅度响应较大的位置。然后用max()函数找到幅度响应最大的位置,即噪声所在的频率,注意可能有多个噪声频率。
还需要把频率从Hz转换为数字频率,后面要用。
方法二(可选做)利用声谱图确定噪声频率:
[xx, fs] = wavread(SunshineSquare);
xx = xx;
figure(1)
specgram(xx, [], fs)
注意:fs是wav文件的采样率。
根据声谱图估计声调的频率,可以借助放大镜工具找到更为准确的频率。
也需要把频率从Hz转换为数字频率。
3.2滤除频率
一个加权三点平均器(FIR滤波器)足以一次滤掉一个频率,给定如下的冲激响应:
h[n] = {1, B, 1}
用B表示频率响应。找到B的值以去除不要的频率。只要找到了正确的值,就可用以下的代码一次去除一个频率:
hh = [1, B, 1];
yy = filter(hh, 1, xx);
原理:
h[n] = {1, B, 1}, 所以
.
所以 .
你需要自己填入B的值。你可以用freqz查看你的滤波器的频率响应:
ww = -pi:pi/100:pi;
HH = freqz(hh, 1 ,ww);
plot(ww,abs(HH));
提示:你需要多个滤波器。你可以选择依次滤波,也可以用conv()把多个滤波器合成一个滤波器。
3.3 其他额外的处理(选做)
这2个步骤处理的结果并不完美,可以经过你自己的观察和思考,加入额外的处理,使效果更完美。
这部分如果做了,请在报告中高亮指出,并且要说明是如何做的,这么做的依据是什么,理论依据和实践依据都可以。
3.4其他绘图函数
(1)plot(xn,’g’) ; stem(xn,’r’)
(2)grid; axis([0,100,-1,1])
(3)xlabel(x(n)); ylabel(X(k))
(4)title(XXX figure);
(5)figure(2); subplot(3,1,1);
(6)clear; close all;
原创力文档


文档评论(0)