⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nmls_main.c

📁 归一化最小均方(LMS)自适应数字滤波
💻 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 + -