2016-11-13 14 views
0

このエラーは何ですか?matlabのインデックスが行列の寸法を超えていますか?

インデックスがマトリックスの寸法を超えています。
評価エラー(行5)
binTempX(i、[1,2,3,4,5,6,7,8])= parentXY(i、[1,2,3,4,5,6 、7,8])。

function [tempX_Y_FXY] = evalution(parentXY,fXY) 

for i=1:6 

    binTempX(i,[1,2,3,4,5,6,7,8])=parentXY(i,[1,2,3,4,5,6,7,8]); 

    binTempY(i,[9,10,11,12,13,14,15,16],8)=parentXY(i,[9,10,11,12,13,14,15,16]); 

    decTempX=bin2dec(binTempX(i,[1,2,3,4,5,6,7,8])); 
    decTempY=bin2dec(binTempY(i,[9,10,11,12,13,14,15,16])); 

    tempX_Y_FXY(i,1)=decTempX; 
    tempX_Y_FXY(i,2)=decTempY; 

    tempX_Y_FXY(i,3)=fXY(decTempX,decTempY); 

end 

tempX_Y_FXY=sortrows(tempX_Y_FXY,3); 


end 
+0

このエラーは非常に説明的です。 'binTempX'または' parentXY'のために使用したインデックスは、その行列の次元を超えています。だから、おそらくそれらの2つの変数をチェックして、それらがあなたのコード内にあると予想されるサイズであることを確認するべきです。また、あなたの質問でコードを適切にフォーマットしてください。あなたがしなければならないことは、それを選択して 'ctrl-k'を押すことだけです。 – beaker

答えて

0
binTempX(i,[1,2,3,4,5,6,7,8])=parentXY(i,[1,2,3,4,5,6,7,8]); 

%%% ------- what is this 8 doing here??? 
binTempY(i,[9,10,11,12,13,14,15,16],**8**)=parentXY(i,[9,10,11,12,13,14,15,16]); 

decTempX=bin2dec(binTempX(i,[1,2,3,4,5,6,7,8])); 
decTempY=bin2dec(binTempY(i,[9,10,11,12,13,14,15,16])); 

tempX_Y_FXY(i,1)=decTempX; 
tempX_Y_FXY(i,2)=decTempY; 

tempX_Y_FXY(i,3)=fXY(decTempX,decTempY); 

に変更し、これを:

binTempX(i,1:8)=parentXY(i,1:8); 

% removed the 8, because I think it is typo?? 
binTempY(i,9:16)=parentXY(i,9:16); 

decTempX=bin2dec(binTempX(i,1:8)); 
decTempY=bin2dec(binTempY(i,9:16)); 

tempX_Y_FXY(i,1)=decTempX; 
tempX_Y_FXY(i,2)=decTempY; 

tempX_Y_FXY(i,3)=fXY(decTempX,decTempY); 

あなたは割り当て/連続した複数の列を選択したい場合は1を使用します。たとえば、8表記を。どちらもうまくいくはずですが、私の意見では、第2のものはより明確で維持しやすいものです。

ビーカーの言ったように、あなたのマトリックスのサイズを確認してください、使用するマトリックスには少なくとも6行16列ありますか?

+0

これでエラーが解決した場合は、投票するのが良いでしょう。 – Romano

関連する問題