for loop options in Matlab
Show older comments
I just learned about Matlab's ability to use matrices as arguments to a for loop;
This displays the columns of the matrix A
A = magic(5)
for n = A
disp(n)
end
I was wondering if it is possible to obtain a sequential index into a loop like this. ie. if I want to print the column number along with the column itself, can I continue with the form above or would I need to revert to a more typical form like
A = magic(5)
for jj = 1:length(A)
disp(['Column #',num2str(jj)])
disp(A(:,jj))
end
Accepted Answer
More Answers (2)
Matt Fig
on 24 Sep 2012
A = magic(5)
cnt = 1;
for jj = A
disp(['Column #' num2str(cnt)])
disp(jj),
cnt = cnt+1;
end
4 Comments
Ravi
on 24 Sep 2012
Walter, did you look closely at the code? I ran it, and it does exactly what Ravi asked for...
Column #1
17
23
4
10
11
Column #2
24
5
6
12
18
Column #3
1
7
13
19
25
Column #4
8
14
20
21
2
Column #5
15
16
22
3
9
Walter Roberson
on 24 Sep 2012
Oh... yes, you are right, I had forgotten that it went by columns when matrices are used. blush
Ravi
on 24 Sep 2012
Shadow
on 2 Apr 2024
enumer = @(my_array) cell2mat(arrayfun(@(x,idx) struct("cargo",x,"idx",idx), my_array(:).', 1:numel(my_array(:).'),UniformOutput=false));
data = rand(5,4)
s=size(data);
for elem = enumer(data)
[row,col] = ind2sub(s,elem.idx);
disp("Element " + string(elem.cargo) + " with index " + string(elem.idx) + " at location " + string(row) + "," + string(col))
end
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!