二階濾波器原理及算法程序


濾波器的作用是允許某些頻率的正弦信號基本無衰減的通過(增益為 1,頻域 0dB),同時對另外某些頻率的正弦信號起到衰減作用(增益在 0.707 以下,頻域-3dB 以下)。 當然,濾波器對通過的正弦信號會產生一定的相移作用。

1.二階通用濾波器

二階濾波器表示的是濾波器時域表達式中最高含有二階微分,或者說傳遞函數分母的s最高次數為2。濾波器對直流分量的增益為1。據此可設零狀態二階通用濾波器的傳遞函數為


時域表達式為


待定參數為a,b,c,d,e。

y(t)——輸出信號,x(t)——輸入信號。
現要將時域微分方程轉換成對應離散域差分方程,假設采樣周期為Ts。

根據微分的定義,有


由以上分析可知,Ts越小時,上述約等式越精確。
將連續量t分段,令t=kTs,k=0,1,2⋯,則微分方程可化為近似離散形式


將上述表達式代入到時域微分方程中,當Ts足夠小時,近似認為


整理后得


進一步簡化得


k1 ⋯ k5對應式⑧相應的系數,且滿足


略去 Ts, 將時域離散信號轉變成序列信號, 成為計算機能夠運算的式子:


根據式⑩, 可以很容易寫出二階通用濾波器的運算程序。

2.二階派生出的特殊濾波器

通過配置二階通用濾波器的系數 a, b, c, d, e,可以生成多種特殊用途的濾波器:


根據所需濾波器的指標(截止頻率、通帶頻率、阻帶頻率等), 可以求出其傳遞函數的系數, 進一步推出通用型中的參數 abcde,再結合采樣周期 Ts, 則可以算出數字濾波器的系數 k1/k2/k3/k4。
對於更高階的濾波器, 可以根據要求, 對二階濾波器進行串聯組合(有些電機驅動器程序就是如此處理)。 例如, 要求一個高階濾波器中含有低通環節、 帶阻環節和超前滯后環節, 則可以先構造三個對應的二階濾波器, 然后在運算中進行串行運算。

以上內容說明了對於二階濾波器, 如何從模擬濾波器模型推出數字濾波器的計算程序。 對於整體的高階濾波器(即非二階組合型),上述方法過於繁瑣,計算量大,則需要采用數字濾波中 IIR 和 FIR 濾波器設計方法,計算各差分量的系數, 請參考《信號與系統》教材。 建議采用 Matlab 中的 FDATOOL 進行濾波器設計, 直接生成 z 域系統方程的參數,非常方便。

參考程序:

typedef struct SecOrdFilter{
float k1;
float k2;
float k3;
float k4;
float k5;
float xin;
float x1;
float x2;
float yout;
float y1;
float y2;
} vector;

#define SecondOrderFilter(v)    \                   // 后面將vector賦值給v
yout = v.k1*v.xin + v.k2*v.x1+v.k3*v.x2+ v.k4*v.y1 + v.k5*v.y2;  \
v.x2 = v.x1;     \
v.x1 = v.xin;    \
v.y2 = v.y1;     \
v.y1 = v.yout; 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM