我想(在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