2016-01-13 62 views
7

他們似乎是完全一樣的,如:MATLAB中的5和[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 

是否有任何differenceI應該知道的?

謝謝。

回答

10

我應該知道有什麼區別嗎?

沒有

4

雖然沒有顯著差異,是有區別的。

v1=5;被創建一個名爲v1變量具有5.

v1=[5];的值被限定爲5的值的矩陣/標量;那麼它將該矩陣與無連接 - 連接是由方括號執行的操作,因此您確實需要它們來定義[1,2,3] - 然後將結果分配給變量v1。因此使用方括號執行附加操作。

這就是爲什麼如果你在編輯器中編寫代碼,你會收到一個M-皮棉消息說

使用括號[]是不必要的。如果需要,請使用括號進行分組。

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}返回的地方的所有對象1至c 3作爲逗號分隔的列表,換句話說,它返回10,20,30。它不是返回數組[10,20,30]。因此,命令x = c{1:3}相當於x=10,20,30,相當於分配x10,然後對文字2030不做任何處理。另一方面,命令y = [c{1:3}]將括號內的逗號分隔列表分組[],所以它相當於y=[10,20,30]。總而言之,x將具有值10,而y將具有值[10,20,30]

相關問題