2016-11-13 58 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'的索引超过了那个矩阵的维数。所以你可能应该检查这两个变量,并确保它们是你期望它们在你的代码中的大小。另外,请在您的问题中正确地格式化代码。所有你需要做的就是选择它并点击'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的符号,例如。两者都应该工作,但在我看来,第二个更清晰和更容易维护。

就像烧杯说的那样,检查你的矩阵的大小,你使用的矩阵是否至少有6行16列?

+0

如果这解决了您的错误,那么投票就很好。 – Romano

相关问题