a = [1 2; 3 4; 5 6]
我想提取a
的第一行和第三行,所以我有x = [1; 3]
(行索引)。
a(x)
不起作用。
答案 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