📄 iir_b.m
字号:
x1=wavread('音乐.wav');
Rp=1;
Rs=8;
Fs=22050;
Ts=1/Fs;
wp1=2*1200*pi/Fs;ws1=2*1000*pi/Fs;
wp2=2*3000*pi/Fs;ws2=2*3200*pi/Fs;
wp=[wp1,wp2];
ws=[ws1,ws2];
wp11=2/Ts*tan(wp1/2);
wp22=2/Ts*tan(wp2/2);
BW=wp22-wp11; W0=wp11*wp22; W00=sqrt(W0);
wpp=2/Ts*tan(wp/2); %将模拟指标转换成数字指标
wss=2/Ts*tan(ws/2);
[N,Wn]=buttord(wpp,wss,Rp,Rs,'s'); %选择滤波器的最小阶数
[Z,P,K]=buttap(N); %创建巴特沃斯模拟滤波器
[Bap,Aap]=zp2tf(Z,P,K); %变系统零点增益为传递函数形式
[b,a]=lp2bp(Bap,Aap,W00,BW); %低通到带通模拟滤波器的变换
[bz,az]=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换
[H,W]=freqz(bz,az); %绘制频率响应曲线
figure(1)
plot(W*Fs/(2*pi),abs(H))
grid
xlabel('频率/Hz')
ylabel('频率响应幅度')
title('巴特沃斯带通虑波器 ')
f1=filter(bz,az,x1);
figure(2)
subplot(2,1,1)
plot(x1) %画出滤波前的时域图
title('滤波前的时域波形');
subplot(2,1,2)
plot(f1); %画出滤波后的时域图
title('滤波后的时域波形');
sound(f1,44100); %播放滤波后的信号
F0=fft(f1,1024);
f=fs*(0:511)/1024;
figure(3)
y2=fft(x1,1024);
subplot(2,1,1);
plot(f,abs(y2(1:512))); %画出滤波前的频谱图
title('滤波前的频谱')
xlabel('Hz');
ylabel('幅值');
subplot(2,1,2)
F1=plot(f,abs(F0(1:512))); %画出滤波后的频谱图
title('滤波后的频谱')
xlabel('Hz');
ylabel('幅值');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -