String problem
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I have the following code
Lev=7;
for i=1:Lev
str=strcat('A',int2str(i));
for j=1:3
str(j,:)=squeeze(Atr(i,j,:));
end
end
This program showing erros like
??? Subscripted assignment dimension mismatch.
Error in ==> attractor_test at 80
str(j,:)=squeeze(Atr(i,j,:));
Actually, I want to assigne names in run time of the program execution. In the above code str have to take names like str ---> A1, A2, A3, ...A7 and store values in A1, A2, A3 ....A7 respectively..
How to do that in matlab ?
0 Kommentare
Akzeptierte Antwort
Bjorn Gustavsson
am 7 Sep. 2011
That is usually a bat thing to do. There is a busload of questions like this, and a good explanation in FAQ-s everywhere and the matlab newsgroup.
What I suggest you do instead is to use cell-arrays:
Lev = 7;
for i1 = 1:Lev
str = strcat('A',int2str(i1));
for j2 = 1:3
A{i1}(j2,:) = squeeze(Atr(i1,j2,:));
end
end
Also it is nice to avoid i and j as loop variables, sooner or later you'll get them jumbled with the imaginary i = (-1)^(1/2).
HTH
1 Kommentar
Andrei Bobrov
am 7 Sep. 2011
n = size(Atr,1)
A = cell(n,1);
for i1 = 1:n
A{i1} = squeeze(Atr(i1,:,:));
end
OR
n =size(Atr)
A = mat2cell(reshape(permute(Atr,[3 2 1]),n(3),[])',ones(n(1)*n(2),1),n(3))
OR
n = size(Atr,1);
A = arrayfun(@(i1)squeeze(Atr(i1,:,:)),1:n,'un',0);
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Numeric Types finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!