for loop options in Matlab
1 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
Walter Roberson
2012-9-24
You would need the more traditional form. There is no way to query which iteration number you are on.
0 个评论
更多回答(2 个)
Matt Fig
2012-9-24
A = magic(5)
cnt = 1;
for jj = A
disp(['Column #' num2str(cnt)])
disp(jj),
cnt = cnt+1;
end
4 个评论
Walter Roberson
2012-9-24
Oh... yes, you are right, I had forgotten that it went by columns when matrices are used. blush
Shadow
2024-4-2
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
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!