我想(在256個樣本10赫茲/秒),以實現簡單的IIR(直接I型)過濾器C.如何在C中實現IIR濾波器?
對於高通我這樣做:
int Diff = Sample - Previous_Sample;
HP_Output = ((HP_Output + Diff) * 4)/5;
對於低(10赫茲@ 32採樣/秒)我這樣做:
int Diff = Sample - LP_Output ;
LP_Output = ((LP_Output + Diff) * 2)/3;
現在我想知道:這兩種實現數學正確嗎?
如果我想改變輸入採樣率(或濾波頻率),我該如何計算新的因子?
你的代碼完全缺少的是* time *。採樣率很重要。實用的過濾器使用許多樣品,而不僅僅是一個。使用Google查找答案,最佳查詢是「iir係數計算器」。 – 2014-09-03 09:24:40
@HansPassant我爲每個樣本調用函數(每秒256個樣本) – Muis 2014-09-03 09:32:42
不是我的意思,您必須存儲舊樣本。記錄在T-1,T-2,T-3等等。你需要一個數組。一旦你閱讀谷歌點擊,這將是非常明顯的,你將不得不花費時間。 – 2014-09-03 09:41:19