在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中获得相同的内容?
答案 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+1
和j+1
,这是因为与在0
开始编制索引的Python不同,Matlab从1
开始编制索引。