MATLAB中方括号的使用

Usage of square brackets in MATLAB

在 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 首先抛出此警告,因为似乎我不能没有这些括号这种情况?

事实证明,很大一部分混淆源于 MathWorks 使用美式英语,因为其他英语世界使用术语 括号for () 和 term 方括号 for []。参见 Wikipedia

正如 MATLAB 警告您的那样:Use parentheses to group if necessary. 在你的情况下,这是必要的。您希望 .' 应用于 1:N,因此使用括号 ()。 方括号[]是收集里面的元素,但是1:N已经收集了

A=(1:N).';

方括号用于声明数组。但是,构建 MATLAB 的语法使得 1:n 已经创建了一个数组。

[1:3] 将等同于 [[1 2 3]],这就是为什么 MATLAB 告诉您在这种情况下不需要方括号

这就是说,由于 operator precedence

,您肯定需要在转置之前用括号对数组声明进行分组