首页 > 解决方案 > 从 Matlab 中的索引列表中获取矩阵的值列表

问题描述

我有一个这样的矩阵:

A = [35,  1,   6,  26;
     3,   32,  7,  21;
     31   9,   2,  22;
     8,   28,  3,  17];

和这样的索引列表:

B = [1,  1;
     1,  2;
     2,  2;
     1,  3];

我想从矩阵 A 中获取具有 B 中的索引的值列表

C = [35, 1, 32, 6]

我使用这段代码:

C = A(B==1)

但是 C 是:

[35, 3, 8, 1]

我哪里错了?

标签: matlabmatrixindices

解决方案


您可以使用sub2indrow,col索引转换为线性索引。

A = [35,  1,   6,  26;
     3,   32,  7,  21;
     31   9,   2,  22;
     8,   28,  3,  17];

B = [1,  1;
     1,  2;
     2,  2;
     1,  3];

linear_ind = sub2ind(size(A), B(:,1), B(:,2));
C = A(linear_ind)

这将导致

C =
    35
     1
    32
     6

推荐阅读