我是matlab的新手,我有一个简单的问题让我感到不安,
我想知道是否可以将矩阵的所有下标转换为线性索引。
使用 SUB2IND 时,我必须告知 de x 和 y 坐标,但我想同时转换所有坐标。
我可以使用返回两个向量 x 和 y 的函数 FIND,这样我可以成功使用 SUB2IND,但 FIND 只返回非零元素的 x 和 y 坐标。
有没有聪明的方法来做到这一点?
您无需转换,只需在访问矩阵元素时使用单个数字 \ 1-D 向量。例如,给定一个 5x5 矩阵M
M=magic(5);
M(5,5)
您可以使用或使用M(25)
...访问最后一个元素
同样M(21:25)
会为您提供M(1,5)
, M(2,5)
,...的信息M(5,5)
。
如果您希望数组的所有元素都A
作为线性下标,这可以通过以下方式完成:
IND = 1:numel(A);
这适用于任何大小或维度的数组。
更多关于Matlab 中的数组索引,包括线性索引和逻辑索引之间的区别。当您使用时,find
您实际上是在使用逻辑索引来获得线性索引。该find
函数可用于通过 可靠地获取所有线性索引,IND = find(A==A);
但这非常低效。