How do I iterate through each element in an n-dimensional matrix in MATLAB?

rlbond picture rlbond · Apr 17, 2009 · Viewed 333.4k times · Source

I have a problem. I need to iterate through every element in an n-dimensional matrix in MATLAB. The problem is, I don't know how to do this for an arbitrary number of dimensions. I know I can say

for i = 1:size(m,1)
    for j = 1:size(m,2)
        for k = 1:size(m,3)

and so on, but is there a way to do it for an arbitrary number of dimensions?

Answer

Andrew picture Andrew · Apr 17, 2009

You can use linear indexing to access each element.

for idx = 1:numel(array)
    element = array(idx)
    ....
end

This is useful if you don't need to know what i,j,k, you are at. However, if you don't need to know what index you are at, you are probably better off using arrayfun()