它们似乎完全一样,如:
>> 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
我应该注意哪些差异?
感谢。
答案 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]
的值为x
,10
的值为y
。