【发布时间】:2011-11-12 08:25:00
【问题描述】:
a = [1 2; 3 4; 5 6]我想提取a的第一行和第三行,所以我有x = [1; 3](行的索引)。
a(x) 不起作用。
【问题讨论】:
-
如果您一直对这些类型的矩阵运算有疑问,我建议您查看 MATLAB 帮助或在线许多免费教程中的任何一个。如果您去查看 MATLAB 帮助文件,这将是绝对值得投资的几个小时。
a = [1 2; 3 4; 5 6]我想提取a的第一行和第三行,所以我有x = [1; 3](行的索引)。
a(x) 不起作用。
【问题讨论】:
像这样:a([1,3],:)
逗号分隔维度,: 表示“整个范围”,方括号构成一个列表。
【讨论】:
在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。
【讨论】:
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'
【讨论】:
您可以编写一个循环来遍历矩阵的行:
for i = [1,3]
a(i,:)
end
【讨论】:
输入:a([1 3],[1 2])
输出是
【讨论】: