BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / matlab / #8639同步于 2011/12/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖

5555 这段代码弄了好几个小时了,但还是出不来东西,急死了。。

xiaoxiao111
2011/12/4镜像同步1 回复
要求设计一个带通滤波器,但人耳对声音频率的感觉是从最低的20Hz 到最高的20KHz。因此用题目的指标参数设计低通滤波器即可。滤波带衰减大 于50db,查表可知汉明窗衰减53db,bartlett 窗衰减74db,Kaiser 窗衰减 80db。选择后两者滤波较为合适。Fp=4000hz,fs=4500hz,截止频率为 fc=(fs+fp)/2.乐曲采样频率为32000hz。计算得到bartlett 滤波器阶数N=352 其Matlab 源程序如下所示: %FIR 数字滤波器的设计和实现 close all; clear all; fp=4000; fs=4500; f=(fs-fp); w=2*pi*f/32000; fc=(fs+fp)/2; wc=2*pi*fc/32000; N1=ceil(11*pi/w); a=fir1(N1,wc/(2*pi),bartlett(N1+1)); [h1,w1]=freqz(a,1,256); figure(1); subplot(2,1,1); plot(w1/pi,20*log10(abs(h1)));title('bartlett');ylabel('dB');grid data_song=wavread('1.wav');%得到“1.wav”的数据 noise = awgn(data_song,20,'measured');%加信噪音为20dB的噪声 wavwrite(noise,32000,'1_noise.wav'); y = filter(a,1,noise); wavwrite(y',32000,'1_filter.wav'); fft_data=abs(fft(data_song,10000)); fft_noise=abs(fft(noise,10000)); fft_y=abs(fft(y,10000)); figure(2); subplot(3,1,1);plot(data_song);title('原始时域'); subplot(3,1,2);plot(noise);title('加噪时域'); subplot(3,1,3);plot(y);title('滤波时域'); figure(3); subplot(3,1,1),plot(fft_data),axis([0,5000,0,1]),title('原始频谱'); subplot(3,1,2),plot(fft_noise),axis([0,5000,0,1]),title('加噪后频谱'); subplot(3,1,3),plot(fft_y),axis([0,5000,0,1]),title('bartlett滤波后频谱'); 运行完只有个ans=3 图像都出不来。。。
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
Rvtea机器人#1 · 2011/12/4
不能这么照搬学姐代码吧……那么多人都用一个版本就完了……