gusucode.com > ​matlab FIR 底通和带通滤波器和IIR 底通和带通滤波器完整程序 > MATLAB_FIR_IIR/IIRditonglvboqi.m

    clear all
clc
N1=1024;t=0:1:N1-1;
fs=5000;
s=(sin(2*100*pi*t/fs)+sin(2*pi*500*t/fs)+2*sin(2*pi*1000*t/fs))+randn(1,length(t/fs));
Y=fft(s);
lp=510;
wn1=2*lp/fs;
[b1,a1]=cheby1(10,0.05,wn1);
y1=filter(b1,a1,s);
Y1=fft(y1);
Ts=t(2)-t(1); 
Ws=2*pi/Ts;
Wn=Ws/2;
f=linspace(0,Wn/(2*pi),length(t)/2);
Ya=abs(Y(1:length(t)/2));
Ya1=abs(Y1(1:length(t)/2));
figure(1)
subplot(121);
plot(f*fs,Ya);axis([0,1500,0,1000]);
xlabel('f');
ylabel('频谱幅值F(\omega)');
title('原信号频谱');
subplot(122)
plot(f*fs,Ya1);
axis([0,1500,0,1000]);
xlabel('f');
ylabel('频谱幅值F(\omega)');
title('经过IIR低通滤波器后的信号频谱');
figure(2)
freqz(b1,a1,64,fs);axis([0,1500,-100,0]);
title('设计的IIR低通滤波器');
figure(3);
subplot(121)
plot(t,s);title('原信号时域图');
axis([0,150,-5,5]);grid;
ss=ifft(Y1(1:length(t)));
subplot(122)
plot(t,ss);title('滤波后的时域图');
axis([0,150,-5,5]);grid;