Pelo que sei, os arrays a:d:b
e [a:d:b]
são exatamente a mesma coisa. Por exemplo,
>> [1:3] == 1:3
ans =
1×3 logical array
1 1 1
No entanto, essas duas expressões dão resultados diferentes:
>> [1:3]' + 1:3
ans =
2 3
>> [1:3]' + [1:3]
ans =
2 3 4
3 4 5
4 5 6
Por que?
(Estou usando Matlab R2017b 9.3.0.713579)
Responder1
Uma boa resposta veio de Rik Wisselink neste fórum: https://www.mathworks.com/matlabcentral/answers/391046-colon-generated-arrays-with-or-without-brackets
A razão para isso é a ordem inesperada em que esta afirmação é avaliada:
[1:3]' + 1:3 ([1:3]' + 1):3 ([1;2;3]+1):3 [2;3;4]:3 2:3 [2,3]
Adicionar colchetes força o agrupamento antes e depois do operador dois pontos (parênteses também funcionariam).
Stephen Cobeldick acrescenta que isso se explica pelo fato de +
ter uma prioridade maior que :
.
Steven Lord também comenta que a transição da linha 4 para a 5 é explicada na documentação:
Se você especificar matrizes não escalares, o MATLAB interpretará j:i:k como j(1):i(1):k(1).