问题描述:
设计6阶0.1-0.6Hz的带通滤波器,并得到滤波系数
const int NL = 7;
const real64_T NUM[7] = {2.282056841956e-07, 0,-6.846170525867e-07,
0,6.846170525867e-07, 0,-2.282056841956e-07};
const int DL = 7;
const real64_T DEN[7] = {1, -5.975348473185, 14.87715239004,-19.75512122077,
14.75593406861, -5.87837166912, 0.9757549044242};
在单片机中定义double型 数组存储初始化系数
得到滤波后的结果:
得到的滤波值逐渐累加
问题排查:
1、单片机中的滤波函数编写有问题?
更改为通带频率更高的滤波器例如2-15Hz,没有出现滤波值累加的情况
2、怀疑是滤波通带通带太窄了,导致滤波器不稳定
更改:滤波通带频率为0.05-0.6Hz
显示滤波器不稳定:
解决方式:
更改带通滤波为低通滤波器:0.6Hz,6阶
滤波结果值不会出现累加情况