2013-05-21 101 views
-2

我得到這個錯誤:投入循環矩陣尺寸必須同意

Error using - Matrix dimensions must agree. 
    Error in DistMatrix3 (line 23) 
     d=sqrt((I-L').^2+(J-M').^2+(K-N').^2); 

    Error in coba (line 20) 
     d=DistMatrix3(cobat,c); % calculate the distance 

在這裏,我的代碼:


我認爲錯誤是因爲DistMatrix3本身不是。它是由c輸入引起的,循環輸入。我猜這幾行應該,因爲它是固定不包含j變量:

for i=1:k 
    f=find(g==i); 
    if f    % calculate the new centroid 
     c(i,:)=mean(cobat(find(g==i),:),1); 
    end 
end 

我卡上,我應該如何解決它。你們能告訴我該怎麼做才能解決這個問題?您的幫助將不勝感激。

謝謝。

+0

正如錯誤信息所示,「I」和「L'」或「J」和「M」或「K」和「N」的矩陣尺寸'不同意。這會導致減法失敗。因此DistMatrix3。所以你必須弄清楚這些差異來自哪裏。 – Schorsch

+0

錯誤消息似乎表明錯誤正在拋出'd = DistMatrix3(cobat,c); %計算距離?尤其是,這是因爲用於計算'd'的一個或多個矩陣('I','L'','J','M'','K','N'')不是相同的尺寸 –

+0

-1:整個問題似乎已經討論[這裏](http://www.mathworks.com/matlabcentral/answers/74791) - 討論的結果是什麼? – Schorsch

回答

1

代碼:

[maxRow, maxCol]=size(cobat); 
for i=1:k 
    for j=1:maxCol 
     c=input('Enter a number: '); % sequential initialization 
    end 
end 

似乎不太可能是正確的。

如果這是這樣的:

[maxRow, maxCol]=size(cobat); 
for i=1:k 
    for j=1:maxCol 
     c(i,j)=input('Enter a number: '); % sequential initialization 
    end 
end 

我也想知道是否用戶輸入的K實際上應該總是等於MaxRow的。