在 scipy 中,我用巴特沃斯滤波器做了一些实验,如下所示:
sos = butter(order, normal_cutoff, btype='low', analog=False, output="sos")
我期望 sos 是滤波器的系数。
我需要将此过滤器移植到手臂平台上。 CMSIS 库中实现了多种过滤器函数,但我不明白巴特沃斯是否属于 CMSIS 中实现的一个过滤器家族。
我的问题是:我应该自己实现 Butterworth 还是有 cmsis 函数?
实现与滤波器设计(本例中为巴特沃斯)无关,而是与滤波器的结构相关,这里的返回是二阶部分(SOS)链,其中每个部分都是一个二阶 IIR 滤波器。
我自己还没有测试过,但有同样的问题,这是 CMSIS 使用的功能:
https://www.keil.com/pack/doc/CMSIS/DSP/html/group__BiquadCascadeDF1.html
您可以查看其中的图表,了解 SOS 部分链的方式以及系数的定义方式。然而,我不确定 a 系数的符号,正如他们在 CMSIS 文章中提到的那样,您需要小心检查滤波器设计算法中这些系数的符号是否与 CMSIS 函数使用的符号相匹配。