Vettori in Octave
Creazione di vettori
modificaPer creare un vettore di tre elementi in Octave inseriamo gli elementi tra parentesi quadre:
octave:1> x = [1 2 3] x = 1 2 3
Quello appena creato è un vettore riga. Per creare un vettore colonna scriviamo:
octave:2> y = [1; 2; 3] x = 1 2 3
cioè ogni punto e virgola indica una nuova riga. Possiamo far diventare un vettore riga un vettore colonna prendendone il trasposto
octave:3> x = [1 2 3]' x = 1 2 3 octave:4> y' ans = 1 2 3
Operazioni sui vettori: somma e prodotto
modificaOvviamente non è possibile fare la somma tra i due vettori e appena definiti in quanto non è matematicamente definita la somma tra un vettore riga ed uno colonna. Possiamo sommare però e o e :
octave:5> z = x + y error: operator +: nonconformant arguments (op1 is 1x3, op2 is 3x1) octave:6> z = x + y' z = 2 4 6
L'operazione di moltiplicazione, avendo entrambi i vettori lo stesso numero di elementi, è invece ben definita. Non vale la proprietà commutativa: , cioè è una matrice di una riga e tre colonne, mentre . Moltiplicando per stiamo di fatto calcolando il prodotto interno , mentre moltiplicando per stiam facendo il prodotto esterno ottenendo una matrice:
octave:7> prodotto_interno = x * y prodotto_interno = 14 octave:8> prodotto_esterno = y * x prodotto_esterno = 1 2 3 2 4 6 3 6 9
Se volessimo moltiplicare i due vettore componente per componente, cioè calcolare per , è possible utilizzare l'operatore "." prima della moltiplicazione. Questa operazione è definita solo per vettori della stessa dimensione:
octave:9> w = x .* y error: product: nonconformant arguments (op1 is 1x3, op2 is 3x1) octave:10> w = x .* y' w = 1 4 9
Accesso agli elementi del vettore
modificaSe si vuole conoscere la lunghezza del vettore scriviamo:
octave:11> N = length(x) N = 3
Per accedere alle componenti del vettore si usano le parentesi tonde:
octave:12> x(2) ans = 2 octave:13> x(end) ans = 3
L'operatore ":" può essere utilizzato per accedere ad un insieme continuo di elementi del vettore:
octave:14> x(2:3) ans = 2 3 octave:15> x(1:end) ans = 1 2 3 octave:16> x(:) ans = 1 2 3
Se invece volessimo vedere solo il primo e l'ultimo e elemento scriviamo:
octave:17> x([1 3]) ans = 1 3
Ranges
modificaDi fatto l'operazione "a:b" crea un vettore con elementi che vanno da "a" a "b" con passo 1.
octave:18> x = 1 : 3 x = 1 2 3 octave:19> x = 1.4 : 3.7 x = 1.4000 2.4000 3.4000
Per creare un vettore con elementi da "a" a "b" con un passo diverso da 1 si utilizza l'operazione "a:passo:b"
octave:20> x = 1 : 0.1 : 1.5 x = 1.0000 1.1000 1.2000 1.3000 1.4000 1.5000