?? nmls_main.c
字號:
#include "math.h"
#include "stdio.h"
void nlms(x,d,n,w,m,mu,sigma2,a,px);
void gain(b,a,m,n,x,y,len,sign);
main()
{int i,k,m,n;
double a,mu,pi,freq,sigma2,px[60];
static double d[501],x[501],y[201],w[60],amp[60],c[60];
FILE *fp;
pi=4.0*atan(1.0);
for(i=0;i<20;i++)
{amp[i]=1.0;}
amp[20]=0.5;
for(i=21;i<=40;i++)
{amp[i]=0.0;}
m=51;
n=500;
for(k=0;k<n;k++)
{d[k]=0.1*amp[0];
x[k]=0.1;
for(i=1;i<41;i++)
{d[k]+=amp[i]*0.1*sin(2.0*pi*0.0125*i*(k-25.0));
x[k]+=0.1*sin(2.0*pi*0.0125*i*k);
}
}
for(i=0;i<m;i++)
{w[i]=0.0;}
mu=0.2;
sigma2=0.2;
a=0.0;
for(i=0;i<m;i++)
{px[i]=0.0;}
nlms(x,d,n,w,m,mu,sigma2,a,px);
printf("\n The Coefficient of Adaptive Filter\n");
for(i=0;i<m;i+=4)
{printf(" %10.7lf %10.7lf",w[i],w[i+1]);
if ((i+2)<=49)
{printf(" %10.7lf %10.7lf",w[i+2],w[i+3]);}
else
{printf(" %10.7lf",w[i+2]);}
printf("\n");
}
fp=fopen("nlmshn.dat","w");
for(i=0;i<m;i++)
{fprintf(fp," %d %10.7lf\n",i,w[i]);}
fclose(fp);
c[1]=0.0;
fp=fopen("nlmsam.dat","w");
gain(w,c,m-1,1,x,y,200,1);
for (i=0;i<200;i++)
{freq=0.5*i/199;
fprintf(fp,"%lf %lf\n",freq,x[i]);
}
fclose(fp);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -