Il significato dell’operatore colon in MATLAB

Mi sono imbattuto in una syntax MATLAB con un colon che non capisco completamente.

Prima domanda:

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 )

Seconda domanda:

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.