MATLAB: Create a variable number of nested for loops? select elements in matrix with variables dimensions

accessing elements in multidimensional matrixodometerscan multidimensional matrix

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

Best Answer

The particular example you give can be written as
M(1:2,1:4,1:6) = 0;
With regards to the nested loop: turn them into a single loop using an "odometer" type mechanism. See my code in https://groups.google.com/group/comp.lang.c/browse_thread/thread/d98842738fa27a55/2f6d5ff877063de1 and Chris Torek's useful modification there.
With regard to variable number of subscripts:
subs = [i1, i2, i3, i4];
subscell = num2cell(subs);
M(subscell{:})