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

时间:2016-01-13 18:09:30

标签: matlab

它们似乎完全一样,如:

>> 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 个答案:

答案 0 :(得分:10)

  

我应该注意哪些差异?

没有

答案 1 :(得分:4)

虽然没有显着差异,但存在差异。

v1=5;正在创建一个名为v1的变量,其值为5.

v1=[5];定义一个值为5的矩阵/标量;然后它将该矩阵与任何东西连接起来 - 连接是由方括号执行的操作,这就是为什么你需要它们来定义[1,2,3] - 然后将结果分配给变量v1。因此,使用方括号可执行其他操作。

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

  

不需要使用方括号[]。如果需要,使用括号进行分组。

答案 2 :(得分:4)

[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,然后对文字20和{ {1}}。另一方面,命令30将括号y = [c{1:3}]之间的逗号分隔列表分组,因此它等同于[]。最后,y=[10,20,30]的值为x10的值为y