paranoidkid 发表于 2008-3-13 19:17

自己写的关于 LMS 的程序出错指教

这是我写的程序,见笑了,也是刚学这个,大家看看错误在什么地方,谢谢
%信号的获得
periodicalsignal=sin(pi*0.02*);
randomsignal=randn(1,500);
noisesignal=periodicalsignal+randomsignal;
subplot(2,1,1);plot(noisesignal);grid;title('原始信号');
%滤波器系数初始化
mu=0.15;%收敛系数
M=32;%滤波器阶数
N=length(noisesignal);%迭代次数
e=zeros(N,1);
w=zeros(M,N);%初始化原始加权系数
%算法迭代
for k=M:N
    xn=noisesignal(k:-1:k-M+1);
    e(k)=noisesignal(k)-w(:,k-1)'*xn;
    w(:,k)=w(:,k-1)+2*mu*e(k)*xn;
end
subplot(2,1,2);plot(e(M:N));grid;title('误差');

[ 本帖最后由 eight 于 2008-3-13 21:21 编辑 ]

sigma665 发表于 2008-3-13 20:12

回复 楼主 的帖子

请把你的错误提示贴出来

paranoidkid 发表于 2008-3-13 20:19

错误提示是
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Error in ==> lmssignal at 15
    e(k)=noisesignal(k)-w(:,k-1)'*xn

sigma665 发表于 2008-3-13 20:26

e(k)=noisesignal(k)-w(:,k-1)'.*xn;
这样试试

eight 发表于 2008-3-13 21:22

这个错误置顶帖有整理,请赚取积分后自行解决

paranoidkid 发表于 2008-3-13 21:22

试过了,还是出错啊

dearcleo 发表于 2008-3-14 10:26

你仔细检查矩阵的维数,noisesignal是1*500,w是32*500,e是500*1,wn是1*32
你这样的矩阵根本没法相乘的。
错误就在于少了很多的转置。

paranoidkid 发表于 2008-3-14 10:37

谢谢您了^_^

eight 发表于 2008-3-14 11:09

这些都是很基础的东西,而且自己调试一下马上出来了,看书、看置顶帖都行
页: [1]
查看完整版本: 自己写的关于 LMS 的程序出错指教