天天看點

MATLAB切比雪夫帶通濾波器

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

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

MATLAB切比雪夫帶通濾波器

圖 1   原始信号 

​使用通帶為[10,100]Hz的切比雪夫濾波器,濾波後的信号時域曲線為:

MATLAB切比雪夫帶通濾波器

圖 2   濾波信号

​對原始信号和濾波信号作傅裡葉變換,觀察頻譜的變化(左圖為原始信号頻譜,有圖為濾波信号頻譜)。

MATLAB切比雪夫帶通濾波器

圖 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

繼續閱讀