Matlab で括弧の有無にかかわらずコロンで生成された配列

Matlab で括弧の有無にかかわらずコロンで生成された配列

私の知る限り、配列a:d:bとは[a:d:b]まったく同じものです。例えば、

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

しかし、次の 2 つの式は異なる結果を生成します。

>> [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) として解釈します。

関連情報