Matlab 中冒號產生的帶或不帶括號的數組

Matlab 中冒號產生的帶或不帶括號的數組

據我所知,數組a:d:b[a:d:b]是完全相同的東西。例如,

>> [1:3] == 1:3
ans =
  1×3 logical array
   1   1   1

然而,這兩個表達式給出了不同的結果:

>> [1:3]' + 1:3
ans =
     2     3

>> [1:3]' + [1:3]
ans =
     2     3     4
     3     4     5
     4     5     6

為什麼?

(我使用的是Matlab R2017b 9.3.0.713579)

答案1

Rik Wisselink 在這個論壇上給了一個很好的答案: https://www.mathworks.com/matlabcentral/answers/391046-colon- generated-arrays-with-or-without-brackets

原因是該語句的計算順序出乎意料:

[1:3]' + 1:3  
([1:3]' + 1):3  
([1;2;3]+1):3  
[2;3;4]:3  
2:3  
[2,3]  

新增括號會強制在冒號運算子之前和之後進行分組(括號也可以)。

Stephen Cobeldick 補充說,這是因為 的+優先順序高於 的事實:

Steven Lord 也評論說,文件中解釋了從第 4 行到第 5 行的轉換:

如果您指定非標量數組,則 MATLAB 會將 j:i:k 解釋為 j(1):i(1):k(1)。

相關內容