array index
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commento
Walter Roberson
il 5 Dic 2011
http://www.mathworks.com/matlabcentral/answers/13205-tutorial-how-to-format-your-question-with-markup
Risposta accettata
the cyclist
il 5 Dic 2011
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 Commenti
the cyclist
il 5 Dic 2011
It would be helpful if you were to "Accept" an answer, signaling to future users that the Question was answered.
Walter Roberson
il 5 Dic 2011
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;
Più risposte (1)
Walter Roberson
il 5 Dic 2011
49 is the numeric equivalent of the character '1' . You are trying to index your array "arr" at the character pat1(i)
0 Commenti
Vedere anche
Categorie
Scopri di più su Matrices and Arrays in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!