假设我有一个名为A的矩阵。 矩阵的值代表坐标, 所以第2行和第3列是2D计划中的坐标(2,3)。
如何将矩阵的所有值映射到不同的索引,以便(0,0)
得到映射值为0等?
(0,0) -> 0
(0,1) -> 1
(0,2) ->2
..
..
等等。
感谢。
答案 0 :(得分:1)
假设你可以使用以1开头的MATLAB索引,这将有效 -
A1 = reshape([1:numel(A)],size(A,1),[])'
如果您想从0
开始制图,只需减去1
-
A1 = reshape([1:numel(A)],size(A,1),[])' -1
答案 1 :(得分:1)
“
sub2ind
命令确定与一组下标值对应的等效单个索引。”
例如,如果
i = sub2ind(size(A), 2, 3);
然后
A(2,3)
和A(i)
引用矩阵A
中的相同元素。
答案 2 :(得分:1)
在MATLAB中,你可以index matrices linearly。假设你有矩阵:
a =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
现在,您可以使用普通下标或使用线性等价来访问位置(3,2)
中的元素。
a(3,2)
ans = 7
a(7)
ans = 7
假设您将索引作为从1到numel(a)
的列表,并且实际上不需要(3,2)
和(7)
之间的链接,这将是最简单的方法。
如您所述,您希望位置(0,0)
中的元素具有索引(0)
。由于MATLAB索引从1
开始,您有两种选择:
如果你得到一个列表(例如来自另一个程序),其中元素从零到(numel(a) - 1)
列出,例如ind = [0, 3, 6, 8]
,我的建议是你只需ind = ind + 1
(或{ {1}}如果您不想覆盖原始矢量。
否则,您每次都可以添加一个:ind_1 = ind + 1
。
但是,如果您真的想要x = a(ind + 1);
和(3,2)
之间的链接,我相信sub2ind
是可行的方式。