预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

自适应滤波的MATLAB实现2204090发表于:2006-12-0608:56来源:中国振动联盟1.LMS算法的仿真程序:%lms算法clearallcloseallholdoff%系统信道权数sysorder=5;%抽头数N=1000;%总采样次数inp=randn(N,1);%产生高斯随机系列n=randn(N,1);[b,a]=butter(2,0.25);Gz=tf(b,a,-1);%逆变换函数h=[0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量y=lsim(Gz,inp);%加入噪声n=n*std(y)/(10*std(n));%噪声信号d=y+n;%期望输出信号totallength=size(d,1);%步长N=60;%60节点作为训练序列%算法的开始w=zeros(sysorder,1);%初始化forn=sysorder:Nu=inp(n:-1:n-sysorder+1);%u的矩阵y(n)=w'*u;%系统输出e(n)=d(n)-y(n);%误差ifn<20mu=0.32;elsemu=0.15;endw=w+mu*u*e(n);%迭代方程end%检验结果forn=N+1:totallengthu=inp(n:-1:n-sysorder+1);y(n)=w'*u;e(n)=d(n)-y(n);%误差endholdonplot(d)plot(y,'r');title('系统输出');xlabel('样本')ylabel('实际输出')figuresemilogy((abs(e)));%e的绝对值坐标title('误差曲线');xlabel('样本')ylabel('误差矢量')figure%作图plot(h,'k+')holdonplot(w,'r*')legend('实际权矢量','估计权矢量')title('比较实际和估计权矢量');axis([060.050.35])2.NLMS算法的仿真程序:%lms算法clearallcloseallholdoff%系统信道权数sysorder=5;%抽头数N=1000;%总采样次数inp=randn(N,1);%产生高斯随机系列n=randn(N,1);[b,a]=butter(2,0.25);Gz=tf(b,a,-1);%逆变换函数h=[0.0976;0.2873;0.3360;0.2210;0.0964;];%信道特性向量y=lsim(Gz,inp);%加入噪声n=n*std(y)/(10*std(n));%噪声信号d=y+n;%期望输出信号totallength=size(d,1);%步长N=60;%60节点作为训练序列%算法的开始w=zeros(sysorder,1);%初始化forn=sysorder:Nu=inp(n:-1:n-sysorder+1);%u的矩阵y(n)=w'*u;%系统输出r(n)=u'*u;%自相关矩阵e(n)=d(n)-y(n);%误差fai=.0001;%修正参数,为防止u'*u过小导致步长值太大而设置的ifn<20mu=0.32;elsemu=0.15;endw=w+mu*u*e(n)/(r(n)+fai);;%迭代方程end%检验结果forn=N+1:totallengthu=inp(n:-1:n-sysorder+1);y(n)=w'*u;e(n)=d(n)-y(n);%误差endholdonplot(d)plot(y,'r');title('系统输出');xlabel('样本')ylabel('实际输出')figuresemilogy((abs(e)));%e的绝对值坐标title('误差曲线');xlabel('样本')ylabel('误差矢量')figure%作图plot(h,'k+')holdonplot(w,'r*')legend('实际权矢量','估计权矢量')title('比较实际和估计权矢量');axis([060.050.35])3.RLS算法的仿真程序:%RLS算法randn('seed',0);rand('seed',0);NoOfData=8000;%SetnoofdatapointsusedfortrainingOrder=32;%自适应滤波权数Lambda=0.98;%遗忘因子Delta=0.001;%相关矩阵R的初始化x=randn(NoOfData,1);%高斯随机系列h=rand(Order,1);%系统随机抽样d=filter(h,1,x);%期望输出%RLS算法的初始化P=Delta*eye(Order,Order);%相关矩阵w=zeros(Order,1);%滤波系数矢量的初始化%RLSAdaptationforn=Order:NoOfD