MATLAB - 提取矩阵的行

时间:2011-09-07 16:53:12

标签: matlab indexing

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

a(x)不起作用。

5 个答案:

答案 0 :(得分:23)

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

逗号分隔尺寸,:表示“整个范围”,方括号列出。

答案 1 :(得分:18)

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

1   5   9
2   6  10
3   7  11
4   8  12

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

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

A(:, [list of columns])  % for whole columns
A([list of rows], :)     % for whole rows

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

A([list of rows], [list of columns])

结果是索引行和列的交集中的元素。结果将是由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    

参考和一些类似的例子:tutorial on MATLAB matrix indexing

答案 2 :(得分:0)

x = a([1 3])表现得像这样:

temp = a(:)     % convert matrix 'a' into a column wise vector
x = temp([1 3]) % get the 1st and 3rd elements of 'a'

答案 3 :(得分:-1)

你可以编写一个循环来遍历矩阵的各行:

for i = [1,3]
    a(i,:)
end

答案 4 :(得分:-3)

输入:a([1 3],[1 2]) 输出是

ans =
     1     2
     5     6