MATLAB - 提取矩阵的行

Tru*_*rup 11 indexing matlab

a = [1 2; 3 4; 5 6]我想提取第一行和第三行a,所以我有x = [1; 3](行的索引).

a(x) 不起作用.

Ker*_* SB 23

像这样: a([1,3],:)

逗号分隔维度,:表示"整个范围",方括号列表.


ZSz*_*SzB 19

在MATLAB中,如果在索引时给出一个参数,则称为线性索引.例如,如果您有4x3矩阵,则元素的线性索引如下所示,它们按列增长:

1   5   9
2   6  10
3   7  11
4   8  12
Run Code Online (Sandbox Code Playgroud)

因为您将[1 3]向量作为参数传递,所以仅选择第1和第3个元素.

选择整列或行时,应使用以下格式:

A(:, [list of columns])  % for whole columns
A([list of rows], :)     % for whole rows
Run Code Online (Sandbox Code Playgroud)

二维矩阵索引的一般形式:

A([list of rows], [list of columns])
Run Code Online (Sandbox Code Playgroud)

结果是索引行和列的交集中的元素.结果将是由X标记的元素:

A([2 4], [3 4 5 7])

. . C C C . C
R R X X X R X
. . C C C . C
R R X X X R X    
Run Code Online (Sandbox Code Playgroud)

参考和一些类似的例子:关于MATLAB矩阵索引的教程.

  • 这比公认的答案更有用.此外,使用向量索引到每个维度的机制对于许多MATLAB用户来说并不为人所知.+1. (5认同)