#include <stdio.h>
#define LEN 2000//序列长度
#define M 6//滤波器阶数
#define var_v 1
void uniform(double a,double b,long int *seed,double w[],double variance);
int main()
{
double x[LEN],h[M]={0},y[LEN]={0},e,d[LEN],w[LEN];
double u=0.00001;
int i,j,k,m;
long int seed=9;
uniform(0,1,&seed,w,var_v); //产生噪声v
for(i=0;i<LEN;i++)
{
d[i]=5;
x[i]=d[i]+w[i];
}
for(i=0;i<LEN;i++)
{
if(i<M)
{
for(j=0;j<i+1;j++)
y[i]+=h[j]*x[i-j];
e=d[i]-y[i];
for(k=0;k<i+1;k++)
h[k]+=2*u*e*x[i-k];
//////////////////////
for(m=0;m<i;m++)
printf("%f\t",h[m]);
printf("\n");
}
else
{
for(j=0;j<M;j++)
y[i]+=h[j]*x[i-j];
e=d[i]-y[i];
for(k=0;k<M;k++)
h[k]+=2*u*e*x[i-k];
//////////////////////
for(m=0;m<M;m++)
printf("%f\t",h[m]);
printf("\n");
}
}
//////////////////////
return 0;
}
评论0