在MATLAB中映射矩阵的值

时间:2014-04-01 14:51:45

标签: matlab indexing mapping coordinates indices

假设我有一个名为A的矩阵。 矩阵的值代表坐标, 所以第2行和第3列是2D计划中的坐标(2,3)。

如何将矩阵的所有值映射到不同的索引,以便(0,0)得到映射值为0等?

(0,0) -> 0
(0,1) -> 1
(0,2) ->2
..
..

等等。

感谢。

3 个答案:

答案 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是可行的方式。