如何使用n个索引向量访问n-D矩阵?

时间:2016-07-25 05:45:15

标签: matlab matrix indexing matrix-indexing

我有一个矩阵

A = repmat(1:7,7,1);

我有索引向量

idx1 = [1 3 5];
idx2 = [1 3 5];

我想在idx1(i),idx2(i)表示的2d坐标处访问A.

当我这样做时

A(idx1,idx2) = 0;

我得到idx 1中的每个元素,idx2中的所有元素。 我只希望为相应的元素分配零值。

再次:我得到了

A = 
0 2 0 4 0 6 7
1 2 3 4 5 6 7
0 2 0 4 0 6 7
1 2 3 4 5 6 7
0 2 0 4 0 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7

但我想要

A = 
0 2 3 4 5 6 7
1 2 3 4 5 6 7
1 2 0 4 5 6 7
1 2 3 4 5 6 7
1 2 3 4 0 6 7
1 2 3 4 5 6 7
1 2 3 4 5 6 7

如何实现这一目标?

由于

1 个答案:

答案 0 :(得分:4)

最简单的方法可能是使用sub2ind生成索引到A所需的线性索引:

linear_ind = sub2ind(size(A),idx1,idx2);
A(linear_ind) = 0;