回 帖 发 新 帖 刷新版面

主题:[讨论]哪位高手帮我看看这段程序,怎么修改,才不出错.谢谢!!

unnamed=[1,2,2,3;3,3,2,1]
err=0.0000001;
w=zeros(size(unnamed,1),1);
w(1)=1;
r=2;
k=1;
while(abs(abs(r)-1)>err) 
    k=k+1;
    w(:,k)=unnamed*(tanh(w(:,k-1)'*unnamed))-tanh(w(:,k-1)'*unnamed)*w(:,k-1);
    w(:,k)=w(:,k)/norm(w(:,k));
    r=w(:,k)'*w(:,k-1);
end
q(:,1)=w(:,k);
k
[em18]

回复列表 (共2个回复)

沙发

你这个错误很明显的:
>> unnamed

unnamed =

     1     2     2     3
     3     3     2     1
而(tanh(w(:,k-1)'*unnamed))

ans =

    0.7616    0.9640    0.9640    0.9951
这两个矩阵怎能相乘?!!不知愿意是不是要把后面的矩阵转置呢??
同理tanh(w(:,k-1)'*unnamed)*w(:,k-1)的错误更严重:
 tanh(w(:,k-1)'*unnamed)

ans =

    0.7616   0.9640    0.9640    0.9951
而>> w(:,k-1)

ans =

     1
     0   
这两个怎么看都不能相乘,总不至于两个矩阵都转置吧?即使是这样,还是错的,因为unnamed*(tanh(w(:,k-1)'*unnamed))与tanh(w(:,k-1)'*unnamed)*w(:,k-1)不能相减。
至于怎么改就得看你愿意是怎么样了,我还看不出你这段程序是用来干什么的。

板凳

谢谢!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册