你需要先掌握 FIR 的一些基本概念。
FIR 算法的核心是卷积, 二楼给出了计算公式: y(n) = h(0)x(n) + h(1)x(n-1) + h(2)x(n-2) +...+h(N)x(n-N), 在计算机上无论定点还是浮点,具体实现都不是难事, 。
需要注意的是 N 的选择。N 必须根据数据采样频率fs以及滤波截止频率 fc设定, 例如采样 800hz, 截止50Hz, 那么 N 可以选取最好 32 点以上(fs / fc *2),过大则影响速度。 H 可由 sin(2*pi * (k/Nc)) / (2*pi*(k/Nc)), Nc 是截止频率采样数 (Nc = fs/fc = 16), k = 0 到 N (32或以上). H (Impulse Response) 也可以用 matlab 上通过图形工具得到, 本质是一样的 , 而 sin(x)/x 更简洁直接。
滤波系数H还要把增益考虑进去。计算 G = h0 + h1 + ......hN. 然后所有滤波系数除以 G, 以使最终增益为 1, 即h0 + h1 + .... hN = 1.
|