|
请教一下,这个程序是DSP中的自适应滤波例子程序,
其中一行我感觉有问题,我已经用红色标示,不知大家怎么看了???
#include"math.h"
#define PI 3.1415926
#define Coeff 16 //定义阶数16阶
#define num 1024 //点数
int FIRLMS(int *nx,float *nh,int nError,int nCoeffNum); //LMS函数声明
float h[Coeff],fU; //h 单位脉冲响应 fu---2U的值
int x[num],y[num],z[num];//x 输入信号,y输出,z 误差信号
main()
{
int i,out;
out=0;
fU=0.0005;
for ( i=0;i
{
h=0;//初始化
}
for ( i=0;i
{
x=256*sin(i*2*PI/34);//初始化输入信号
y=z=0;//初始化 输出信号 误差信号
}
for ( i=Coeff+1;i
{
out=FIRLMS(x+i,h,out-x[i-1],Coeff); // 设置断点,调用LMS函数
y=out;
z=y-x;
}
exit(0); //推出
}
int FIRLMS(int *nx,float *nh,int nError,int nCoeffNum)
{
int i,r;
float fWork;
r=0;
for ( i=0;i
{
fWork=nx*nError*fU; //h(n+1)=h(n)+2u*e(n)*x(n)
nh+=fWork;
r+=(nx[i-i]*nh);
}
r/=128;
return r;
}
|
|