MATLAB中的5和[5]有什么区别?

7

它们看起来完全相同,就像:

>> v1 = [5];
>> v2 = 5;
>> isequal(v1, v2)
ans = 
      1
>> [5] * [1,2,3]
ans = 
       5   10   15
>> v1(1)
ans = 
      5
>> v2(1)
ans = 
      5

有什么区别我需要注意吗?

谢谢。

3个回答

10

我应该注意到有什么不同吗?

没有。


4

虽然没有显著差异,但是确实存在差异。

v1=5; 创建了一个名为v1的变量,其值为5。

v1=[5]; 定义了一个值为5的矩阵/标量;然后将该矩阵与空值拼接 - 拼接是由方括号执行的操作,这也是为什么需要使用它们来定义[1,2,3]的原因 - 然后将结果赋给变量v1。因此,使用方括号会执行额外的操作。

这就是为什么如果您在编辑器中编写代码,您会收到一个m-lint消息,其中说:

使用方括号[]是不必要的。如有需要,请使用括号进行分组。


4
< p > [5]5 没有区别。但是通常情况下,一个表达式[f]f(其中 f 是某个表达式)之间可能会有区别。以下是一个例子:

c = {10,20,30,40,50,60}; x = c{1:3} y = [c{1:3}]

在这个例子中,变量 c 是一个单元格数组,所以操作 c{1:3} 返回从 c 的位置 1 到 3 中的所有对象作为逗号分隔列表,换句话说,它返回值为 10,20,30。它不会返回数组 [10,20,30]。因此,命令 x = c{1:3} 等同于 x=10,20,30,它等同于将 x 的值赋为 10,然后对字面量 2030 不做任何处理。另一方面,命令 y = [c{1:3}] 将逗号分隔列表括在方括号 [] 中,因此等同于 y=[10,20,30]。最后,变量 x 的值为 10,而变量 y 的值为 [10,20,30]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接