Por lo que puedo decir, las matrices a:d:b
y [a:d:b]
son exactamente lo mismo. Por ejemplo,
>> [1:3] == 1:3
ans =
1×3 logical array
1 1 1
Sin embargo, estas dos expresiones dan resultados diferentes:
>> [1:3]' + 1:3
ans =
2 3
>> [1:3]' + [1:3]
ans =
2 3 4
3 4 5
4 5 6
¿Por qué?
(Estoy usando Matlab R2017b 9.3.0.713579)
Respuesta1
Una buena respuesta vino de Rik Wisselink en este foro: https://www.mathworks.com/matlabcentral/answers/391046-colon-generated-arrays-with-or- without-brackets
La razón de esto es el orden inesperado en el que se evalúa esta declaración:
[1:3]' + 1:3 ([1:3]' + 1):3 ([1;2;3]+1):3 [2;3;4]:3 2:3 [2,3]
Agregar los corchetes fuerza la agrupación antes y después del operador de dos puntos (los paréntesis también habrían funcionado).
Stephen Cobeldick añade que esto se explica por el hecho de que +
tiene mayor prioridad que :
.
Steven Lord también comenta que la transición de la línea 4 a la 5 se explica en la documentación:
Si especifica matrices no escalares, MATLAB interpreta j:i:k como j(1):i(1):k(1).