MATLAB切比雪夫带通滤波器

原始信号由5Hz,50Hz,110Hz三种频率的正弦信号构成,并含有直流分量。

原始信号为:y=sin(5*2*pi*x)+sin(50*2*pi*x)+sin(110*2*pi*x)+0.5;​

图 1   原始信号 

​使用通带为[10,100]Hz的切比雪夫滤波器,滤波后的信号时域曲线为:

图 2   滤波信号

​对原始信号和滤波信号作傅里叶变换,观察频谱的变化(左图为原始信号频谱,有图为滤波信号频谱)。

图 3   频谱对比 

​对比图 3 可见,原始信号5Hz,110Hz的交流成分和直流成分都被滤掉了,只保留了50Hz交流成分,并且幅值吻合。

附切比雪夫II型带通滤波器程序

​function [X,Y]=Chebyshev2bp(x,y,fp,fs,Rp,Rs)

% fp 通带边界频率,单位Hz

% fs 阻带边界频率,单位Hz

% Rp 通带波纹,单位分贝(通常取值为1,该值越小通带幅值越平稳,但过渡带宽也越大)

% Rs 阻带衰减,单位分贝(从30附近试取,该值越大阻带幅值越小,但过渡带宽也越大)

wp=fp*2*pi;

ws=fs*2*pi;

[N,Wn]=cheb2ord(wp,ws,Rp,Rs,'s');  % 根据滤波器要求,求得滤波器最小阶数(计算也越慢)和截止频率(万永革 例5-17)

N

%%% 关于滤波器阶数N的说明

% 理论上,滤波器阶数越高越接近理想滤波器,但滤波器阶数达到一定值后再增加阶数,其逼近程度并不再显著提高,但计算量依然增加,所以理论上不需要无穷大的阶数

% 实际编程中,随着阶数无限升高,更根本的问题是计算机积累误差凸显,将使其与理想滤波器相去甚远,最终时域幅值严重失真,所以实际应用中滤波器阶数也不是越高越好

[z,p,k]=cheb2ap(N,Rs);  %设计Chebyshev II型原型低通滤波器(万永革 例5-8)

[b,a]=zp2tf(z,p,k);  % 将零点极点增益形式转换为传递函数形式

Wo=sqrt(Wn(1)*Wn(2));  % 计算中心点频率(万永革 例5-14)

Bw=Wn(2)-Wn(1);  % 计算频带宽度

[bt,at]=lp2bp(b,a,Wo,Bw);  % 频率转换。将模拟原先低通滤波器转换为带通滤波器

H=[tf(bt,at)];  % 在MATLAB中表示此滤波器(万永革 例5-13)

[Y,X]=lsim(H,y,x);

 

https://www.cnblogs.com/alimy/p/9140695.html

展开阅读全文

没有更多推荐了,返回首页