开源项目:https://github.com/ruohoruotsi/Butterworth-Filter-Design.git
该高阶巴特沃斯滤波器采用C++实现,考虑将来同时可以应用在单片机上,需要转换为C代码库输出,需要对该算法进行效果验证和代码转换。因此在对滤波器知识需要一定的基础知识和了解。
1、了解滤波器的基础知识,知道高通、低通、带通、带阻、高搁架、低搁架、参数滤波器的知识
2、阅读该项目的源码,知道算法的数据结构和处理流程(比如C++里面的vector数组全部转换为c语言的指针,注意内存分配,double类型数据采用宏定义,在某些mcu上因为性能问题,需要采用float)
3、需要考虑滤波器系数设计错误问题,需要考虑异常情况,滤波器系数有问题时,不进行处理
4、需要动态分配内存时,需要考虑多线程处理的冲突问题
5、针对滤波器的音频数据输出,需要考虑限幅输出。
6、需要自己实现简单的复数结构和代数运算和平方根计算。
7、所有分配指针和累积变量都需要初始化。(开源项目由于在四阶的变量未初始化,导致参数滤波在前期会导致音频错误)
8、最后需要了解和阅读该开源项目依据的算法文献。
9、在实际应用平台评估算法的性能