【问题标题】:How to access n-D matrix with n index vectors? [duplicate]如何访问具有 n 个索引向量的 n-D 矩阵? [复制]
【发布时间】:2016-07-25 05:45:14
【问题描述】:

我有一个矩阵

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

我有索引向量

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

我想在 idx1(i),idx2(i) 表示的二维坐标处访问 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

如何做到这一点?

谢谢

【问题讨论】:

  • 为了澄清,你想要的输出的第一行应该是0 2 1 4 1 6 7还是0 2 3 4 5 6 7
  • 对不起。现已编辑。
  • @thewaywewalk 感谢您要求 OP 澄清。我想我现在可以取消删除我的答案了。
  • @edwinksl 不客气,我删除了我的

标签: matlab matrix indexing matrix-indexing


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-06
    • 2018-11-19
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多