数组 - 如何在MATLAB中迭代n维矩阵中的每个元素?
我有个问题。 我需要在MATLAB中遍历n维矩阵中的每个元素。 问题是,我不知道如何为任意数量的维度做这件事。 我知道我可以说
for i = 1:size(m,1)
for j = 1:size(m,2)
for k = 1:size(m,3)
等等,但有没有办法为任意数量的维度做到这一点?
8个解决方案
87 votes
您可以使用线性索引来访问每个元素。
for idx = 1:numel(array)
element = array(idx)
....
end
如果你不需要知道你是什么i,j,k,那么这很有用。 但是,如果您不需要知道自己的索引,那么最好使用arrayfun()
Andrew answered 2019-05-19T12:59:35Z
33 votes
matlab中数组的线性索引的想法是一个重要的。 MATLAB中的数组实际上只是元素的向量,在内存中排列。 MATLAB允许您使用行索引和列索引,或单个线性索引。 例如,
A = magic(3)
A =
8 1 6
3 5 7
4 9 2
A(2,3)
ans =
7
A(8)
ans =
7
我们可以通过将数组展开到向量中来查看元素存储在内存中的顺序。
A(:)
ans =