"小研究":我解决了滤波器益出的问题,但是还是不能达到滤波器的效果.<br /><br />先我附上我的程序,还请指点:<br /><br />/*<br />*********************************************************************<br />**函数原型: void FirLowPassPrg(short *Input, short *Coefs, short *Output) <br />**参数说明: Input : 输入数据<br /> Coefs :滤波器系数<br /> Output:滤波输出数据<br /> DBUFLEN: 128<br /> LpfCoefsLen: 滤波器系数个数 51<br />**返回值: 无<br />**说明: Low pass filter (0 -- 10K Hz)<br />*********************************************************************<br />*/<br />void FirLowPassPrg(short *Input, short *Coefs, short *Output)<br />{<br /> ushort i, n;<br /> <br /> // 由于直接进行1024个点的FIR滤波,则导致溢出<br /> // 所以将1024个点的FIR滤波分解成128次的8个点的滤波<br /> for (n = 0; n < 128; n++) {<br /> for (i = 0; i < DBUFLEN; i++) {<br /> // Clear Delay buffer (must)<br /> DbBuffer = 0x00; <br /> }<br /> dbptr = &DbBuffer[0];<br /> fir(&Input[n * (NX / 128)], Coefs, <br /> &Output[n * (NX / 128)], &dbptr, <br /> LpfCoefsLen, (NX / 128));<br /> }<br /> <br /> // 将滤波后的数据再次存放到Input[]中<br /> for (i = 0; i < NX; i++) {<br /> Input = Output;<br /> }<br />}<br />
|