use*_*729 2 syntax matlab colon subscript matrix-indexing
给出以下示例:
>> 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
Run Code Online (Sandbox Code Playgroud)
为什么I(:)在I(1:2)返回较短的行向量时返回列向量?
当(:)语法用作方程右侧的索引时,语法是一种特殊操作,它将任何维度的整个矩阵重新整形为单个列向量.因此,以下两行代码给出了相同的结果:
a = I(:); % Create a column vector with ":"
a = reshape(I, [], 1); % Create a column vector with RESHAPE
Run Code Online (Sandbox Code Playgroud)
当数值包含在单个冒号的任一侧时,它表示一系列线性索引到一个数组中.因此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索引中的第二个应用于列,因此选择第一列和第二列.
描述冒号运算符和矩阵索引的MATLAB文档应该有助于您更好地理解如何:有效地使用它.
| 归档时间: |
|
| 查看次数: |
2255 次 |
| 最近记录: |