大家好,因项目需要,我需要做个FIR滤波器程序,可是根据参考程序,自己设计的还是不行,今天实在没有办法了,把程序重要部分贴上来,大家帮我解答一下吧,谢谢了!!
#include "DSP28_Device.h"
#include"math.h"
//FIR相关参数初始化
#define Pi 3.1415926 //圆周率系数
#define SampleNum 200 //AD采样个数
#define WindowNum 25 //窗函数长度为25 τ(延迟时间)=(25-1)/2
#define DelayTime WindowNum/2 //即专业术语 τ(延迟时间)
//下面这个函数就是求FIR系数的函数,我定义是25阶的滤波(WindowNum),加汉明窗了
void firdes(int DelayTime1,int WindowNum1, double npass1)
{
int n;
for (n=0; n<WindowNum1; n++)
{
H[n]= sin((n-DelayTime1)*npass1*2*Pi)*(0.54-0.46*cos(2*n*Pi/(WindowNum1-1))) /(Pi*(n-DelayTime1));
//此处即是冲击响应函数公式,(汉明窗), npass是数字截止频率=截止频率/采样频率
if (n==WindowNum1/2) H[n]=npass1*2;
}
}
|