paranoidkid 发表于 2008-4-22 09:43

求助为何用lms方法提取原信号出错

%get the signal
n=2000;
s=ones(n,1);%欲得到的信号
subplot 411;plot(s);grid;axis();
v=2*(sin(0.3*pi*(1:n))+sin(0.6*pi*(1:n))+sin(0.9*pi*(1:n)));
v=v';
x=s+v;%加入噪声后的信号
subplot 412;plot(x);grid;axis();
%initialization
sysorder=6;
w=zeros(sysorder,1);
len=length(x);
%algorithm
for n=sysorder:len
    X=x(n:-1:n-sysorder+1);
    y(n)=X'*w;%用lms处理后的信号
    e(n)=s(n)-y(n);%误差信号
   if n<20
      mu=0.02;
    else
      mu=0.01;
   end
    w=w+2*mu*X*e(n);
end
subplot 413;plot(y);grid;axis();
subplot 414;plot(e);grid;axis();
得到结果如图
%get the signal
n=2000;
s=ones(n,1);
subplot 411;plot(s);grid;axis();
v=2*(sin(0.3*pi*(1:n))+sin(0.6*pi*(1:n))+sin(0.9*pi*(1:n)));
v=v';
x=s+v;
subplot 412;plot(x);grid;axis();
%initialization
sysorder=6;
w=zeros(sysorder,1);
len=length(x);
%algorithm
for n=sysorder:len
    X=x(n:-1:n-sysorder+1);
    y(n)=X'*w;
    e(n)=s(n)-y(n);
   if n<20
      mu=0.02;
    else
      mu=0.01;
   end
    w=w+2*mu*X*e(n);
end
subplot 413;plot(y);grid;axis();
subplot 414;plot(e);grid;axis();
为何处理后的信号y不是欲得到信号呢

[ 本帖最后由 eight 于 2008-4-22 09:53 编辑 ]

eight 发表于 2008-4-22 09:54

原帖由 paranoidkid 于 2008-4-22 09:43 发表 http://www.chinavib.com/forum/images/common/back.gif
%get the signal
n=2000;
s=ones(n,1);%欲得到的信号
subplot 411;plot(s);grid;axis();
v=2*(sin(0.3*pi*(1:n))+sin(0.6*pi*(1:n))+sin(0.9*pi*(1:n)));
v=v';
x=s+v;%加入噪声后的信号
subp ... 建议这么专业的问题自己设置一下断点并调试程序,看看哪个地方出问题了
页: [1]
查看完整版本: 求助为何用lms方法提取原信号出错