带通滤波器滤波
发布时间:2021-06-07
发布时间:2021-06-07
对象1:一个含有10Hz、30Hz和60Hz的混合正弦波信号X=sin(2*pi*t*10)+ sin(2*pi*t*30)+ sin(2*pi*t*60),通过一个设计的IIR带通椭圆滤波器(elliptic)后,使输入的混合信号中频率为30Hz的正弦波信号通过,而将频率为10Hz和60Hz的正弦波信号大大衰减。 产生一个含有10Hz、30Hz和60Hz的混合正弦波信号X
MATLAB程序实现如下:
Fs=200;
t=(1:200)/Fs;
x1=sin(2*pi*t*10);
x2=sin(2*pi*t*30);
x3=sin(2*pi*t*60);
X= x1+ x2+ x3;
plot(t,X);
title('混合正弦波信号X(t)-滤波前');
grid;
产生一个4阶IIR带通椭圆滤波器
MATLAB程序实现如下:
wp1=20;
wp2=40;
Fs=200;
rp=0.2;
rs=40;
wp1=2*pi*wp1;
wp2=2*pi*wp2;
Bw=wp2-wp1;
Wo=sqrt(wp2*wp1);
[z,p,k]=ellipap(4,rp,rs); %创建模拟低通滤波器原型
[A,B,C,D]=zp2ss(z,p,k); %把模拟低通滤波器原型转换成模拟低通滤波器
[At,Bt,Ct,Dt]=lp2bp(A,B,C,D,Wo,Bw); %把模拟低通滤波器转换成带通滤波器
[At1,Bt1,Ct1,Dt1]=bilinear(At,Bt,Ct,Dt,Fs); %双线性变换法把模拟滤波
[num,den]=ss2tf(At1,Bt1,Ct1,Dt1); 器转换成数字滤波器
[H,W]=freqz(num,den);
plot(W*Fs/(2*pi),abs(H));
title('频率响应特性');
grid;
xlabel('频率/Hz');
ylabel('幅值');
对混合正弦波信号X进行滤波
MATLAB程序实现如下
Y=filter(num,den,X);
plot(t,Y);
title('滤波后信号-Y');
gri;
axis([0 1 -1 1]);
绘出信号滤波前、后的幅频图
上一篇:股票盘口语言
下一篇:2016秋季教师任课安排草表