基于matlab各滤波器源代码文档格式.docx
《基于matlab各滤波器源代码文档格式.docx》由会员分享,可在线阅读,更多相关《基于matlab各滤波器源代码文档格式.docx(11页珍藏版)》请在冰豆网上搜索。
![基于matlab各滤波器源代码文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/6/b06cbec2-a337-4252-ba39-f067e79ee917/b06cbec2-a337-4252-ba39-f067e79ee9171.gif)
%回放语音
title('
语音信号时域波形图'
)
y=fft(x,3260);
f=(FS/3260)*[1:
1630];
subplot(2,1,2);
plot(f(1:
1630),abs(y(1:
1630)));
语音信号频谱图'
%产生噪声信号并加到语音信号
t=0:
length(x)-1;
zs0=0.05*cos(2*pi*100*t/22050);
figure
(2);
subplot(2,1,1)
plot(zs0)
噪声信号波形'
zs1=fft(zs0,1200);
%sound(zs0,FS,bits);
%回放噪音
f=(FS/1200)*[1:
600];
subplot(2,1,2)
600),abs(zs1(1:
600)));
噪声信号频谱'
x1=x+zs0'
;
%sound(x1,FS,bits);
%回放加入噪声后的语音
y1=fft(x1,1200);
figure(3);
plot(x1);
600),abs(y1(1:
加入噪声后的信号波形'
加入噪声后的信号频谱'
%加窗滤波
wp=0.25*pi;
ws=0.3*pi;
wdelta=ws-wp;
N=ceil(6.6*pi/wdelta);
%取整
(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)
plot(t,x1)
滤波前的时域波形'
plot(t,f1);
滤波后的时域波形'
sound(f1);
%播放滤波后的语音信号
F0=fft(f1,1024);
f=FS*(0:
511)/1024;
figure(6)
y2=fft(x1,1024);
plot(f,abs(y2(1:
512)));
%画出滤波前的频谱图
滤波前的频谱'
xlabel('
Hz'
ylabel('
fuzhi'
F1=plot(f,abs(F0(1:
%画出滤波后的频谱图
滤波后的频谱'
巴特沃兹低通滤波器:
f=(FS/1630)*[1:
zs=0.05*cos(2*pi*10000*t/22050);
zs0=0.05*cos(2*pi*10000*t/22050000);
zs1=fft(zs,1200);
%sound(zs,FS,bits);
%回放噪音
x1=x+zs'
sound(x1,FS,bits);
%低通滤波
fp=3000;
fs=3500;
rp=1;
rs=10;
wp=2*pi*fp/Fs;
ws=2*pi*fs/Fs;
Fs1=1;
wap=2*tan(wp/2);
was=2*tan(ws/2);
[N,wc]=buttord(wap,was,rp,rs,'
s'
[B,A]=butter(N,wc,'
[Bz,Az]=bilinear(B,A,Fs1);
figure(4);
[h,w]=freqz(Bz,Az,512,Fs1*22050);
plot(w,abs(h));
巴特沃斯低通滤波器'
频率(HZ)'
耗损(dB)'
gridon;
yd=filter(Bz,Az,x1);
figure(5);
plot(yd);
title('
滤波后信号波形'
ydd=fft(yd,1200);
600),abs(ydd(1:
滤波后信号频谱'
%sound(yd,FS,bits);
巴特沃兹高通滤波器:
zs0=0.25*cos(2*pi*100*t/22050);
%高通滤波
fp=400;
fs=300;
T=1;
high'
'
巴特沃斯高通滤波器'
%sound(yd,FS,bits)
巴特沃兹带通滤波器:
%带通滤波
fp=[800,9000];
fs=[700,10000];
巴特沃斯带通滤波器'
Blackman加窗高通滤波器:
%高通加窗滤波
fp=600,fc=400;
wp=2*pi*fp/FS;
ws=2*pi*fc/FS;
Bt=wp-ws;
N0=ceil(11*pi/Bt);
N=N0+mod(N0+1,2);
wc=(wp+ws)/2/pi;
hn=fir1(N-1,wc,'
blackman(N));
X=conv(hn,x);
%sound(X,FS,bits);
X1=fft(X,1200);
subplot(211);
plot(X);
滤波后的信号波形'
subplot(212);
600),abs(X1(1:
滤波后的信号频谱'