在MATLAB中,5和[5]之间的区别是什么?
它们看起来完全一样,比如:在MATLAB中,5和[5]之间的区别是什么?,matlab,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 我应该知道有什么不同吗 谢谢 我应该知道有什么不同吗 没有虽然没有显著差异,但存在差异 v1=5正在
>> 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
我应该知道有什么不同吗
谢谢
我应该知道有什么不同吗
没有虽然没有显著差异,但存在差异
v1=5
正在创建一个名为v1
的变量,该变量的值为5
v1=[5]代码>定义了一个值为5的矩阵/标量;然后,将该矩阵无任何内容地连接起来-连接是由方括号执行的操作,这就是为什么需要它们定义[1,2,3]
-然后将结果分配给变量v1
。因此,使用方括号执行附加操作
这就是为什么如果您在编辑器中编写代码,您将收到一条m-lint消息,其中说
不需要使用括号[]。如果需要,请使用括号进行分组
[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
和30
。另一方面,命令y=[c{1:3}]
将逗号分隔的列表分组在括号[]
之间,因此它相当于y=[10,20,30]
。总之,x
将具有值10
,而y
将具有值[10,20,30]