array index
2 ビュー (過去 30 日間)
古いコメントを表示
Hi, I have declared the size of array as 4*4.When i run the third for loop the size of array becomes 49*49.Dont know why this happens in that loop?
pat1='11';
arr=zeros(4,4);
len=length(pat1);
for i=1:4
for j=1:4
arr(i,j)=l+2;
end
end
for j=1:4
arr(1,j)=1;
end
for i=1:len-1
arr(pat1(i),pat1(i+1))=l-i;
end
for i=1:4
arr(i,1)=l+1;
end
[EDITED, Jan Simon, Code formatted]
1 件のコメント
Walter Roberson
2011 年 12 月 5 日
http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup
採用された回答
the cyclist
2011 年 12 月 5 日
Because "pat1" is a character array, you are accessing the numerical equivalent of the character '1', which is 49. MATLAB is implicitly using "double('1')" to convert that character to a numeric.
Not sure why you defined pat1 that way, but you could use the following in your third loop:
arr(str2num(pat1(i)),str2num(pat1(i+1)))=l-i;
(If that is indeed what you intend.)
3 件のコメント
the cyclist
2011 年 12 月 5 日
It would be helpful if you were to "Accept" an answer, signaling to future users that the Question was answered.
Walter Roberson
2011 年 12 月 5 日
But what if the pattern did not happen to correspond to numeric characters?
If you are *sure* that pat1 will contain only numeric characters, then the str2num() calls that the cyclist shows can be replaced:
arr(pat1(i)-'0', pat1(i+1)-'0') = 1-i;
その他の回答 (1 件)
Walter Roberson
2011 年 12 月 5 日
49 is the numeric equivalent of the character '1' . You are trying to index your array "arr" at the character pat1(i)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Characters and Strings についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!