DSP

matlab辅助 c语言版FIR滤波器 音频PCM数据滤波

2019-07-13 17:51发布

前期参考:https://blog.csdn.net/SSG18829575503/article/details/80971003 【DSP学习笔记】基于CCS5.5的FIR滤波器设计
2018年07月09日 17:27:02 素小树 ------------------------- 功能:输入一段pcm数据,输出滤波后的Pcm数据。 TIPS:输入的音频pcm数据可以通过audacity软件制作。 TODO:卷积函数没有做数据越界处理——当卷积窗口滑动到最后一个数据,数组后的数据也会引入计算。   matlab生成的滤波器:低通滤波,生成方法参考文首的链接 /* General type conversion for MATLAB generated C-code */ #include "tmwtypes.h" /* * Expected path to tmwtypes.h * C:Program FilesMATLABR2012aexterninclude mwtypes.h */ /* * Warning - Filter coefficients were truncated to fit specified data type. * The resulting response may not match generated theoretical response. * Use the Filter Design & Analysis Tool to design accurate * int16 filter coefficients. */ const int BL = 6; const int16_T B[6] = { 3519, 5123, 6610, 6610, 5123, 3519 }; 卷积函数: #if FIR /** * pcmData : input PCM array, int16 stero PCM * pcmData_fir : output PCM array, int16 stero PCM */ printf("===fir=== "); uint32_t n,m; int32_t yn; int16_t* pcmdata_p = (int16_t*)pcmData; //--------------left PCM channel------------- for(n=0;n< sizeof(pcmData) /2;n++) { yn=0; for(m=0;(m>(10+5); } //--------------right PCMchannel------------- for(n=0;n< sizeof(pcmData) /2;n++) { yn=0; for(m=0;(m>(10+5); } #endif