Matlab中的花式数组访问

时间:2014-03-19 11:55:18

标签: arrays matlab indexing

在Python numpy中,可以使用索引数组,如(摘自教程):

data = array([[ 0,  1,  2,  3],
              [ 4,  5,  6,  7],
              [ 8,  9, 10, 11]])
i = array( [ [0,1],         # indices for the first dim of data
             [1,2] ] )
j = array( [ [2,1],         # indices for the second dim
             [3,3] ] )

现在,调用

data[i,j]                                 

返回数组

array([[ 2,  5],
       [ 7, 11]])

如何在Matlab中获得相同的内容?

1 个答案:

答案 0 :(得分:3)

我认为您必须使用linear indexing函数中的sub2ind,如下所示:

ind = sub2ind(size(data), I,J)

示例:

data =[ 0,  1,  2,  3
        4,  5,  6,  7
        8,  9, 10, 11]

i = [0,1;
     1,2];

j = [2,1;
     3,3]

ind = sub2ind(size(data), i+1,j+1);
data(ind)

ans =

     2     5
     7    11

请注意我去了i+1j+1,这是因为与在0开始编制索引的Python不同,Matlab从1开始编制索引。