create a variable number of nested for loops? select elements in matrix with variables dimensions?
Afficher commentaires plus anciens
hi,
i have a fucntion with a matrix that has variables dimensions (depends on a parameter given in input) and i would like to scan all the elements inside, but the fact is that i don't know how to nest many for loops.
let´s make an example: M is a matrix 3 dimensional with length [2,4,6]
i would like to do:
for i1:1=2
for i2:1=4
for i3:1=6
M(i1,i2,i3) = 0;
end
end
end
as you can notice, i need 3 loops, but how to use N loops, with N the number of dimensions of M (N is fixed once that function is called)? i thought about using eval, but it seems not working..
another related question, i would like to access to element M(i1,i2,i3) if N=3 or M(i1,i2,i3,i4,i5) if N=5, should i use eval also in this case, or is there any better solution?
thanks in advance
Réponse acceptée
Plus de réponses (2)
Andrea
le 8 Juin 2012
0 votes
Henry Charlesworth
le 30 Juin 2016
Modifié(e) : Henry Charlesworth
le 30 Juin 2016
So you can do it with eval although not sure it's particularly good practice:
%
nLoops=3;
str = '';
for i=1:nLoops
str = sprintf('%s \n for i%d=1:5',str,i);
end
str = sprintf('%s \n [i1 i2 i3]',str);
for i=1:nLoops
str = sprintf('%s \n end',str);
end
eval(str)
1 commentaire
Walter Roberson
le 1 Juil 2016
eval() is not recommended at all. It is fairly prone to mistakes, and always inefficient.
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!