MATLAB - istruzioni d'uso
Espressioni aritmetiche e variabili
Il risultato di ogni operazione prende il nome di variabile. Si può scegliere il nome della variabile a cui assegnare un certo valore per un massimo di 31 caratteri. È case sensitive (distingue tra maiuscole e minuscole) per i nomi di variabili e per le funzioni integrate. L'operazione di assegnazione (attribuzione di un valore alla variabile) viene fatta con il simbolo =.
Precisione numerica
Quando si opera in aritmetica finita, non sempre un'operazione tra due o più numeri macchina produce un risultato. In particolare si ha:
- Overflow: quando l'operazione produce come risultato un numero più grande del massimo numero rappresentabile.
- Underflow: quando l'operazione produce come risultato un numero più piccolo del minimo numero rappresentabile.
Alcune delle variabili predefinite riguardanti la precisione numerica di MATLAB: la precisione di macchina (eps) è il più piccolo numero che sommato a 1 fornisce un numero > di 1.
Principali funzioni matematiche e comandi utili
Finora si è pensato alle variabili utilizzate come semplici valori numerici (variabili scalari). In realtà, ogni variabile è una struttura di tipo vettoriale: ARRAY è una lista di valori ordinati secondo uno o più indici.
Array (vettori e matrici)
Un array ha due dimensioni: la prima dimensione rappresenta il numero di righe (n), la seconda il numero di colonne (m). Funzioni MATLAB che consentono di costruire particolari matrici e vettori:
- Traccia di una matrice:
trace - Sommare le componenti di un vettore:
sum
Il resto delle funzionalità:
- Pre-allocazione: per ottenere codice più veloce, è possibile effettuare la pre-allocazione di vettori e matrici, ossia l'allocazione in memoria dei vettori e delle matrici prima del loro utilizzo (usando la funzione
zeroseones) rendendo il codice più efficiente (spesso si eliminano i messaggi di warning di MATLAB). - Memorizzare un vettore riga:
>> x=[1 -1 3 4 0]. Gli spazi delimitano le singole componenti del vettore riga. - Memorizzare un vettore colonna:
>> x=[1; -1; 3; 4; 0]. I punti e virgola delimitano le singole componenti del vettore colonna. - Costruzione di vettori equispaziati:
vettore=inizio:passo:fine. Questo vettore x viene usato negli esempi successivi. - Comando linspace:
linspace(min,max,numero di punti).>> x=linspace(0,0.5,6). Genera dei vettori riga linearmente intervallati. Dove min, max sono gli estremi dell'intervallo in cui generare i numeri e num è il numero di elementi da generare nell'intervallo specificato. Il numero di punti è opzionale, se omesso viene posto uguale a 100.
Usare la costruzione di vettori equispaziati o usare il comando linspace è indifferente. Il risultato è il medesimo.
Operazioni con array
Operazioni base:
- Prodotti tra array: vengono eseguite le operazioni di prodotto vettore - vettore, matrice - vettore, matrice - matrice tramite
*. - Operazione di vettorializzazione: volendo utilizzare le operazioni aritmetiche tra vettori (come elevamento a potenza, divisione), che normalmente non sono definite, è possibile farlo tramite l'utilizzo del simbolo
.posto davanti al simbolo dell'operazione (^,/) permette di svolgere l'operazione per ogni singolo componente del vettore, ottenendo così un nuovo vettore, di lunghezza uguale, le cui componenti sono frutto dell'operazione.
Perciò, avendo un vettore x, se voglio usare una funzione su ogni componente del vettore (ottenendo così un nuovo vettore), basta dichiarare la funzione normalmente, utilizzando però la vettorializzazione delle operazioni. Per esempio:
- Elevare a potenza un vettore x, cioè ottenere un nuovo vettore con le singole componenti di x elevate al dato esponente n, non è possibile farlo con
x^n, si utilizza:x.^n - Funzione con elevamento a potenza, divisione:
>> y=(1-3*x.^2)./(2-x.^3) y = 0.5000 0.4852 0.4418 0.3700 0.2686 0.1333
Estrarre parte delle componenti di un array, operatore ::
- Permette di estrarre sotto-matrici di una matrice nota dove l'ordine degli indici è sempre (riga, colonna). Mettendo solo
:si intendono tutti gli elementi.