Matrizes geradas por dois pontos com ou sem colchetes no Matlab

0

Pelo que posso dizer, as matrizes 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 fornecem 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ê?

(Estou usando o Matlab R2017b 9.3.0.713579)

    
por OpticAl 05.02.2018 / 02:57

1 resposta

1

Uma boa resposta veio de Rik Wisselink neste fórum: link

The reason for this is the unexpected order in which this statement is evaluated:

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

Adding the brackets forces the grouping before and after the colon operator (parentheses would have worked as well).

Stephen Cobeldick acrescenta que isso é explicado pelo fato de que + tem uma prioridade maior que : .

Steven Lord também comenta que a transição da linha 4 para 5 é explicada na documentação:

If you specify nonscalar arrays, then MATLAB interprets j:i:k as j(1):i(1):k(1).

    
por 27.03.2018 / 21:40

Tags