You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scipy Butterworth滤波器移植ARM CMSIS:需自行实现还是有现成函数?

Butterworth滤波器移植到ARM平台(CMSIS库)的疑问

我使用Scipy开展了Butterworth滤波器实验,代码如下:

sos = butter(order, normal_cutoff, btype='low', analog=False, output="sos")

我认为sos即为滤波器系数。现需将该滤波器移植至ARM平台,CMSIS库中包含多种滤波器函数,但我不确定Butterworth是否属于其支持的滤波器类型。请问我需要自行实现Butterworth滤波器,还是CMSIS库中有对应的可用函数?

解答

  • CMSIS-DSP库完全支持Butterworth滤波器,无需自行从头实现。
  • 针对你用Scipy生成的sos(二阶级联)系数,CMSIS-DSP提供了现成的二阶节滤波函数:
    • 单精度浮点:arm_biquad_cascade_df1_f32
    • Q15定点:arm_biquad_cascade_df1_q15
    • Q31定点:arm_biquad_cascade_df1_q31
  • 注意Scipy的sos格式是[b0, b1, b2, a0, a1, a2](a0通常为1),而CMSIS要求的二阶节系数顺序是[b0, b1, b2, a1, a2],移植时需要去掉a0并调整顺序。
  • 如果你不想依赖Scipy生成系数,也可以直接用CMSIS-DSP的内置函数生成Butterworth滤波器系数,比如部分新版本提供的arm_butterworth_lowpass_f32等API,可直接生成符合要求的二阶节系数并初始化滤波器实例。

内容的提问来源于stack exchange,提问作者Julien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:10:07