gpt4 book ai didi

matlab - 为什么(:) with no values behave differently?

转载 作者:行者123 更新时间:2023-12-02 09:01:43 25 4
gpt4 key购买 nike

给出以下示例:

>> I=[2 1 3;3 2 4]

I =

2 1 3
3 2 4

>> I(:)

ans =

2
3
1
2
3
4

>> I(1:2)

ans =

2 3

为什么 I(:) 返回列向量,而 I(1:2) 返回较短的行向量?

最佳答案

(:) 语法用作等式右侧的索引时,为 special operation将任意维度的整个矩阵 reshape 为单个列向量。因此,以下两行代码给出相同的结果:

a = I(:);               % Create a column vector with ":"
a = reshape(I, [], 1); % Create a column vector with RESHAPE

当数值包含在单个冒号的两侧时,它表示范围 linear indices到一个数组中。因此,I(1:2)I 中选择第一个和第二个元素(即第一列中的值)。要记住的一件事是,语法 1:2 实际上创建了一个向量 [1 2],因此 I(1:2) 是与I([1 2])相同。由于线性索引 [1 2] 是行向量,因此返回值的形状为行向量 [2 3]。如果使用索引 I([1; 2])I((1:2).'),则线性索引是列向量,因此返回值将被塑造为列向量[2; 3].

当您有多个以逗号分隔的索引时,这些索引将应用于正在索引的矩阵的不同维度。例如,I(1:2, 1:2) 将返回 2×2 矩阵 [2 1; 3 2]。索引中的第一个 1:2 应用于行,因此选择第一行和第二行。索引中的第二个 1:2 应用于列,因此选择第一列和第二列。

描述 colon operator 的 MATLAB 文档和 matrix indexing应该可以帮助您更好地理解如何有效地使用 :

关于matlab - 为什么(:) with no values behave differently?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2707231/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com