【发布时间】:2011-02-12 00:41:26
【问题描述】:
举个例子:
>> 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) 返回一个较短的行向量?
【问题讨论】:
-
我闻到了旧版支持的味道。 Matlab充满了那种东西。
-
@Mike,这不是遗产。 Matlab 是一种与 C、C++、Java、Python 等完全不同的语言。它适用于数学家(他们习惯于从 1 开始索引),而不是程序员。虽然它本身很有用(它有很好的矩阵支持),但它所做的一些事情(比如不缓存函数和为每个函数调用重新打开/关闭文件)使它不适合原型设计。
-
@Mike:实际上,我认为
(:)语法相对新,而不是旧的保留语法。 -
最后一个问题:为什么
I(:)是列向量,而I(3:4)是行向量? -
@gnovice:我认为
(1:2)语法是遗留问题。 Matlab 中的许多其他事物更喜欢将列向量作为其一维数据。
标签: matlab syntax subscript colon matrix-indexing