在MATLAB中,您可以使用
轻松创建整数数组N = 100; % Number of points
A = 1:N; % row vector of 1,2,3,..., 100
如果我想要一个列向量而不是一个行向量,我可以用
来做A = [1:N].';
现在,MATLAB警告我
Use of brackets [] is unnecessary. Use parentheses to group if necessary.
嗯,它们不是必需的,因为1:N.'
创建了一个行向量,因为只有标量N
被转置,而不是完整的数组。
我当然可以在该行,该文件或所有文件中禁止此消息,但为什么MATLAB首先会抛出此警告,因为似乎我不能在没有这些括号的情况下执行此操作这个案子?
事实证明,混淆的很大一部分源于The MathWorks对美式英语的使用,因为其他英语世界使用术语括号来表示{{1和()
的术语方括号。请参阅Wikipedia
答案 0 :(得分:4)
正如MATLAB警告你:Use parentheses to group if necessary.
在你的情况下,这是必要的。您希望.'
应用于1:N,因此请使用括号()
。
方括号[]
用于收集其中的元素,但已收集1:N
A=(1:N).';
答案 1 :(得分:4)
方括号用于声明数组。但是,构建了MATLAB的语法,以便1:n
已经创建了一个数组。
[1:3]
将等同于[[1 2 3]]
,这就是为什么MATLAB告诉你在这种情况下不需要方括号
这就是说,由于operator precedence
,你需要在转置之前用括号对数组声明进行分组。