基于matlab各滤波器源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汉明窗的FIR低通滤波:
Fs=22050;
[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav');%G:\Users\DP\Desktop \SoundTest.wav G:\Users\DP\Desktop\好铃网-湖人掘金宣传片.wav
x=x(:,1);
figure(1);
subplot(2,1,1);
plot(x);
%sound(x,FS,bits); %回放语音
title('语音信号时域波形图')
y=fft(x,3260);
f=(FS/3260)*[1:1630];
subplot(2,1,2);
plot(f(1:1630),abs(y(1:1630)));
title('语音信号频谱图');
%产生噪声信号并加到语音信号
t=0:length(x)-1;
zs0=0.05*cos(2*pi*100*t/22050);
figure(2);
subplot(2,1,1)
plot(zs0)
title('噪声信号波形');
zs1=fft(zs0,1200);
%sound(zs0,FS,bits);%回放噪音
f=(FS/1200)*[1:600];
subplot(2,1,2)
plot(f(1:600),abs(zs1(1:600)));
title('噪声信号频谱');
%sound(x1,FS,bits); %回放加入噪声后的语音
y1=fft(x1,1200);
figure(3);
subplot(2,1,1);plot(x1);
f=(FS/1200)*[1:600];
subplot(2,1,2);
plot(f(1:600),abs(y1(1:600)));
title('加入噪声后的信号波形');
title('加入噪声后的信号频谱');
%加窗滤波
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta); %取整
t=0:(size(x1)-1);
wn=(0.2+0.3)*pi/2;
b=fir1(N,wn/pi,hamming(N+1)); %选择窗函数,并归一化截止频率f1=fftfilt(b,x1);
figure(4)
freqz(b,1,512)
[h1,w1]=freqz(b,1);
plot(w1*FS/(2*pi),20*log10(abs(h1)));
figure(5)
subplot(2,1,1)
plot(t,x1)
title('滤波前的时域波形');
subplot(2,1,2)
title('滤波后的时域波形');
sound(f1); %播放滤波后的语音信号
F0=fft(f1,1024);
f=FS*(0:511)/1024;
figure(6)
y2=fft(x1,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512))); %画出滤波前的频谱图
title('滤波前的频谱')
xlabel('Hz');
ylabel('fuzhi');
subplot(2,1,2)
F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图
title('滤波后的频谱')
xlabel('Hz');
ylabel('fuzhi');
巴特沃兹低通滤波器:
Fs=22050;
[x,FS,bits]=wavread('G:\Users\DP\Desktop\SoundTest.wav');%G:\Users\DP\Desktop \SoundTest.wav G:\Users\DP\Desktop\好铃网-湖人掘金宣传片.wav
x=x(:,1);
figure(1);
subplot(2,1,1);
plot(x);
%sound(x,FS,bits); %回放语音
title('语音信号时域波形图')
y=fft(x,3260);
f=(FS/1630)*[1:1630];
subplot(2,1,2);
plot(f(1:1630),abs(y(1:1630)));
title('语音信号频谱图');
%产生噪声信号并加到语音信号
t=0:length(x)-1;
zs=0.05*cos(2*pi*10000*t/22050);
zs0=0.05*cos(2*pi*10000*t/22050000); figure(2);
subplot(2,1,1)
plot(zs0)
title('噪声信号波形');
zs1=fft(zs,1200);
%sound(zs,FS,bits); %回放噪音
subplot(2,1,2)
plot(f(1:600),abs(zs1(1:600)));
title('噪声信号频谱');
x1=x+zs';
sound(x1,FS,bits); %回放加入噪声后的语音y1=fft(x1,1200);
figure(3);
subplot(2,1,1);plot(x1);
title('加入噪声后的信号波形');
subplot(2,1,2);
plot(f(1:600),abs(y1(1:600)));
title('加入噪声后的信号频谱');
%低通滤波
fp=3000;fs=3500;Fs=22050;