CSI-DSP  Version 1.0.0
CSI DSP Software Library
FIR 低通滤波器示例
描述说明:
使用一个FIR低通滤波器移除信号的高频部分。 示例演示了如何配置一个FIR滤波器,然后按块传入数据。
FIRLPF_signalflow.gif
算法:
输入信号是两个正弦波的和: 1 kHz 和 15 kHz. 处理信号用的是一个截止频率为6kHz的低通FIR滤波器。 低通滤波器消除15kHz信号,输出中只保留1 kHz 。
使用MATLAB设计一个低通滤波器,以及一个频率48 kHz的样本,长度为29个点。 MATLAB生成滤波器的代码和使用系数如下:
    h = fir1(28, 6/24);
第一个参数是滤波器的阶数,总比需要的长度小1 第二个参数是归一化截止频率,它的范围是 0 (DC) 到 1.0 (Nyquist). 6 kHz 截止频率和 24 kHz 的奈奎斯特频率,组合乘了归一化频率 6/24 = 0.25. CSI FIR滤波器函数要求系数按时间相反的顺序排布。
    fliplr(h)
滤波器系数的结果罗列在下面. 注意滤波器是对称的 (FIR滤波器的线性相位性质), 并且对称的点是样本 14. 因此,对于所有频率,滤波器将具有14个采样的延迟。
FIRLPF_coeffs.gif
滤波器的频率响应如下。 滤波器的通带增益为1.0,在截止频率6kHz时达到0.5.
FIRLPF_response.gif
输入信号如下。 左侧是时域中的信号,而右侧则表示频域。 可以清楚地看到两个正弦波分量.
FIRLPF_input.gif
滤波器的输出如下,15kHz的部分已经被消除
FIRLPF_output.gif
变量说明:
  • testInput_f32_1kHz_15kHz 指向输入数据
  • refOutput 指向参考输出数据
  • testOutput 指向测试输出数据
  • firStateF32 指向状态缓存
  • firCoeffs32 指向系数缓存
  • blockSize 一次处理的样本数量
  • numBlocks 帧的数量
使用的CSI DSP软件库函数:

参考 csky_fir_example_f32.c