繁体   English   中英

MATLAB:如何解决最小均方算法代码

[英]Matlab: How to fix Least Mean square algorithm code

我正在研究最小均方算法,并看到了这段代码。 根据算法步骤,误差和权重更新的计算看起来不错。 但是,它无法提供正确的输出。 有人可以帮忙解决问题吗? 该代码取自:

http://www.mathworks.com/matlabcentral/fileexchange/35670-lms-algorithm-implementation/content/lms.m

clc
close all
clear all

N=input('length of sequence N = ');
t=[0:N-1];
w0=0.001;  phi=0.1;
d=sin(2*pi*[1:N]*w0+phi);
x=d+randn(1,N)*0.5;
w=zeros(1,N); 
mu=input('mu = ');
for i=1:N
   e(i) = d(i) - w(i)' * x(i);
   w(i+1) = w(i) + mu * e(i) * x(i);
end
for i=1:N
yd(i) = sum(w(i)' * x(i));  
end
subplot(221),plot(t,d),ylabel('Desired Signal'),
subplot(222),plot(t,x),ylabel('Input Signal+Noise'),
subplot(223),plot(t,e),ylabel('Error'),
subplot(224),plot(t,yd),ylabel('Adaptive Desired output')

编辑

来自答案的代码:

N = 200;
M = 5;
w=zeros(M,N); 
mu=0.2;%input('mu = ');
y(1) = 0.0;
y(2) = 0.0;
for j = 3:N
 y(j) = 0.95*y(j-1) - 0.195*y(j-2); 
end

x = y+randn(1,N)*0.5;
%x= y;
d = y;
for i=(M+1):N
   e(i) = d(i) -  x((i-(M)+1):i)*w(:,i);
   w(:,i+1) = w(:,i) + mu * e(i) * x((i-(M)+1):i)';
end
for i=(M+1):N
    yd(i) = x((i-(M)+1):i)*w(:,i);  
end

存储系数的权重矩阵w全部为零,这意味着LMS方程无法正常工作。

我也没有在您的代码中发现任何错误。 但我怀疑,这个算法适用于这种噪声。 使用更高阶的滤波器(在这种情况下为M)会得到更好的结果:

M = 5;
w=zeros(M,N); 
mu=0.2;%input('mu = ');
for i=(M+1):N
   e(i) = d(i) -  x((i-(M)+1):i)*w(:,i);
   w(:,i+1) = w(:,i) + mu * e(i) * x((i-(M)+1):i)';
end
for i=(M+1):N
    yd(i) = x((i-(M)+1):i)*w(:,i);  
end
   N=input('length of sequence N = ');
    t=[0:N-1];
   w0=0.001;  phi=0.1;
   d=sin(2*pi*[1:N]*w0+phi);
   x=d+randn(1,N)*0.5;
    w=zeros(1,N); 
   mu=input('mu = ');
   for i=1:N
   yd(i)=w*x'; 
  e(i) = d(i) - w * x';
 for m=1:N
 w(m) = w(m) + mu * e(i) * x(m);
  end
 end
    subplot(221),plot(t,d),ylabel('Desired Signal'),
  sub plot(222),plot(t,x),ylabel('Input Signal+Noise'),
  subplot(223),plot(t,e),ylabel('Error'),
  subplot(224),plot(t,yd),ylabel('Adaptive Desired output')

您所缺少的是每次输入样本和权重更新的一次迭代中的误差项相乘

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM