Mi sono imbattuto in una syntax MATLAB con un colon che non capisco completamente.
L’espressione: 0:pi/4:pi
risulta nella risposta: 0 0.7854 1.5708 2.3562 3.1416
Perché è così? Ho pensato che l’operatore del colon sia usato come un modo rapido per fare riferimento agli indici in modo da non dover scrivere l’elenco completo. (es. 1:3
-> 1 2 3
)
Simile a sopra, diciamo se ho una matrice X = [1 2 3 4 5 6 7 8 9]
. Come posso interpretare l’espressione X(:,1:3)
? In particolare, cosa significa l’operatore dei due punti senza i numeri sinistro e destro?
In realtà a:b
genera un vettore. Potresti usarlo come indice solo perché (...)
accetta anche una lista, es
octave-3.0.3:10> a = [1,4,7] a = 1 4 7 octave-3.0.3:11> b = [1,4,9,16,25,36,49] b = 1 4 9 16 25 36 49 octave-3.0.3:12> b(a) # gets [b(1), b(4), b(7)] ans = 1 16 49
Ora, la syntax a:b:c
è equivalente a [a, a+b, a+2*b, ...]
fino a c
, ad es.
octave-3.0.3:15> 4:7:50 ans = 4 11 18 25 32 39 46
che spiega cosa ottieni in 0:pi/4:pi
.
Un solitario :
seleziona l’intero asse (riga / colonna), ad es
octave-3.0.3:16> a = [1,2,3;4,5,6;7,8,9] a = 1 2 3 4 5 6 7 8 9 octave-3.0.3:17> a(:,1) # means a(1:3, 1) ans = 1 4 7 octave-3.0.3:18> a(1,:) # means a(1, 1:3) ans = 1 2 3
Vedi il documento ufficiale MATLAB su due punti (:) per i dettagli.
I miei due centesimi per la risposta di KennyTM.
In realtà le variabili scalari e vettoriali in MATLAB hanno 2 dimensioni. Scalare ha 1 riga e 1 colonna e il vettore ha 1 riga o colonna. Basta provare la size(X)
.
L’operatore di Colon (:) per l’indicizzazione significa semplicemente tutto . Sintassi X(:,1:3)
significa ottenere tutte le righe e le colonne da 1 a 3. Poiché la variabile X
ha solo 1 riga, otterrai i primi 3 valori in questa riga.