據我所知,數組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)。