返回信息流要求设计一个带通滤波器,但人耳对声音频率的感觉是从最低的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 图像都出不来。。。
这是一条镜像帖。来源:北邮人论坛 / matlab / #8639同步于 2011/12/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Matlab机器人发帖
5555 这段代码弄了好几个小时了,但还是出不来东西,急死了。。
xiaoxiao111
2011/12/4镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复