Index exceeds matrix dimensions.
조회 수: 1 (최근 30일)
이전 댓글 표시
f = figure('Position',[10 10 600 600]);
dat = {-1,1,1;0,-1,0;0,0,-1;1,0,0};
cnames = {'1','2','5'};
rnames = {'1','2','3','4'};
t = uitable('Parent',f,'Data',dat,'ColumnName',cnames,...
'RowName',rnames,'Position',[10 10 590 590]);
blnA = logical( A == -1 );
blnOut = find(any(A == -1,2));
rnames{max(blnOut)};
negcolumn = find(A(min(blnOut),:) == 1);
cnames{max(negcolumn)};
dU(5)=7;
dU(cnames{max(negcolumn)})
Error message occurred. I couldn't find the mistake.(cnames{max(negcolumn)})=5 So it must be dU(5)=7 but error message
Index exceeds matrix dimensions.
댓글 수: 1
the cyclist
2013년 6월 8일
I cannot run your code, because I do not have the array A. Is it possible for you to post self-contained code that will execute and show that error?
채택된 답변
Image Analyst
2013년 6월 8일
Perhaps
A = cell2mat(dat);
but I can't figure out what dU is for - it's not being used. Anyway, look at this code:
dU(5)=7;
maxValue = max(negcolumn)
index = cnames{maxValue} % Gives string '5'
dU(5) % Works fine.
dU(cnames{max(negcolumn)}) % dU('5') = du(53) which is not defined because dU has only 5 elements.
You can't have the string '5' be the index into an array. Perhaps you wanted cnames to be a cell array that stored integers, not strings:
cnames = {1,2,5};
which works, though I still don't know what you're after.
댓글 수: 0
추가 답변 (1개)
Walter Roberson
2013년 6월 8일
You have not defined dU()
cnames indexed by a number gives you a string. Indexing an array by a string is not impossible but seldom gives the expected answer: in your case it would be equivalent to asking for dU([49 50])
You need to remember that '1','2','5' are strings and that you almost never index arrays at strings; arrays get indexed at row numbers and column numbers.
If you need to be able to access an array by the name of a row, or the name of a column, then you need to use the MATLAB database object, which is part of the Statistics toolbox.
댓글 수: 5
Image Analyst
2013년 6월 8일
See my answer to your new explanation in your duplicate question: http://www.mathworks.com/matlabcentral/answers/78455#answer_88183
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!