Riassunti informatica pt.2

Array

Array = è una collezione indicizzata di variabili (elementi) dello stesso tipo.

Creare un array

Un array in matlab si crea scrivendo gli elementi che lo compongono all’interno di parentesi quadre. Gli elementi devono essere separati da una virgola o da uno spazio.

Gli array qui mostrati vengono detti array riga, poiché i suoi elementi sono disposti in senso orizzontale.

Matlab permette anche di creare degli array colonna. Esistono due modi per farlo:

Matlab visualizza gli array riga orizzontalmente e gli array colonna verticalmente.

Matlab permette di creare array da array preesistenti.

E’ possibile creare degli array di elementi regolarmente intervallati.

Se l’incremento viene omesso, matlab lo pone di default uguale a 1.

Linspace (x1, x2, n) = crea un linea di elementi linearmente intervallati, indicando il numero di valori invece dell’incremento. Genera n elementi tra x1 e x2.

Nota: linspace (x1 x2) genera un array riga di 100 elementi, equidistanti tra x1 e x2. Quindi omettendo n, vengono generati 100 elementi.

Indicizzare un array

Come accedere ad uno specifico elemento dell’array? Si utilizzano gli indici

 

Manipolare un array tramite indici

Cancellare un elemento da un array

Cancellare più elementi da un array

Modificare il valore di un elemento in un array

v ( : ) identifica tutti gli elementi dell’array v

v (2 : 5) identifica tutti gli elementi di v il cui indice è compreso tra 2 e 5.

Es.

E’ possibile accedere a più elementi dell’array alla volta

Semplici operazioni su array

Tutte le operazioni che sono state applicate su variabili contenenti un solo elemento possono essere applicate agli array.

Es.

Ricerca in array

La funzione find restituisce indici

Unione ed intersezione di array

Operazioni aritmetiche su array

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Matrici (array 2D)

Gli array (1D) possono essere visti come casi particolari di matrici (2D) con dimensione 1 x n o n x 1. Possiamo creare una matrice digitando direttamente i suoi elementi in due modi diversi:

NB: spazi e virgole separano gli elementi per colonne, mentre il punto e virgola separa gli elementi per riga.

zeros (nr, nc) = crea una matrice nr (numeri righe) x nc (numeri colonne) composta da tutti zero

 

eye (nr, nc) = crea una matrice identità nr x nc

rand (nr, nc) = crea una matrice nr x nc di numeri pseudocasuali, compresi tra 0 e 1

cat (n, A, B, C,...) = crea una nuova matrice concatenando le matrici A, B, C lungo la dimensione n. Se:

  • n = 1, la concatenazione è fatta per righe;

  • n = 2, la concatenazione è fatta per colonne;

Indicizzare una matrice

L’indicizzazione di una matrice e molto simile a quella di un array

x (r, c) = r indica la riga, c la colonna

Es.

Indicizzare righe e colonne di una matrice

x (r, :) si riferisce all’intera riga r

x (: , c) si riferisce all’intera colonna r

 

 

 

 

 

 

 

Indicizzare sotto array e sotto matrici

Quindi, tramite l’operatore due punti :, di matlab è possibile selezionare all’interno di una matrice: righe, colonne, sotto-array e sotto-matrici.

E’ possibile indicizzare una matrice usando una singola coordinata

La dimensione della matrice a sx e a dx dell’assegnazione devono essere identiche, a meno che la matrice di dx non abbia dimensione 1 x 1 oppure si sta sovrascrivendo una matrice.

Es.

Le righe e le colonne di una matrice possono essere cancellate ponendole uguali all’array vuoto.

Es.

Semplici operazioni su matrici

Trasposta di una matrice

max (A) = trova il numero massimo in ogni colonna della matrice A

La funzione min funziona analogamente alla funzione max, ma restituisce il valore minimo.

mean (A) = trova la media di ogni colonna della matrice A

sum (A) = restituisce la somma degli elementi di A.

  • Se A è un array, effettua la somma degli elementi

  • Se A è una matrice, restituisce (in un array) la somma degli elementi di ciascuna colonna

sum (A, dim) = somma gli elementi di A lungo la dimensione indicata da dim.

  • Se dim = 1, somma gli elementi per colonna

  • Se dim = 2, somma gli elementi per riga

sort (A) = ordina ogni colonna della matrice A in maniera crescente

size (A) = restituisce un array riga contenente le dimensioni (num. righe e num. colonne) della matrice A

length (A)

  • restituisce il numero di elementi di A, se A è un array

  • restituisce il numero massimo di righe e colonne, se A è una matrice

numel (A) = restituisce il numero di elementi della matrice A

find (A) = restituisce un array contenente gli indici degli elementi non nulli della matrice A. Questa funzione può essere usata mediante indicizzazione a due coordinate.

La funzione find può anche essere utilizzata mediante indicizzazione a singola coordinata

any (A) = verifica se ogni elemento di A è non nullo. Restituisce 1 se almeno un elemento è non nullo, 0 altrimenti

any (A, dim)

  • se dim = 1, il comportamento della funzione è equivalente a quello di any (A)

  • se dim = 2, si verifica quanto segue

Operazioni aritmetiche su matrici

Le operazioni aritmetiche viste per gli array sono naturalmente estese alle matrici.

Script e funzioni Matlab

Matlab consente di memorizzare una sequenza di istruzioni in un file, detto M-file. Un M-file può essere di due tipi:

  • M-file script = contiene una sequenza di comandi o istruzioni matlab, nella stessa forma in cui vengono scritti usando la command window.

  • M-file function = contiene nuove funzioni matlab definite dall’utente. In generale, tali funzioni accettano dati in input e restituiscono dati in output.

In matlab è possibile comandi, istruzioni e funzioni mediante i seguenti passi:

  • creare un file

  • salvare un file

  • eseguire il file

Un file contenente una lista di comandi / istruzioni / funzioni matlab viene dette M-file script.

Ogni M-file script ha l’estensione .m

Per eseguire l’M-file script si deve usare la command window.

L’M-file script deve essere memorizzato nella Current Directory. Per eseguirlo è sufficiente digitare nella command window il nome del file script (senza l’estensione .m)

Funzioni

Funzione = è un segmento (blocco) autonomo di programma che esegue un compito specifico. In termini più formali, una funzione è una porzione di codice all’interno di un programma più ampio, che svolge un compito specifico e può essere relativamente indipendente dal resto del codice. Le funzioni rappresentano le basi per costruire programmi più complessi.

Una funzione può:

  • accettare uno o più (ma anche zero) argomenti in input

  • restituire uno o più (ma anche zero) argomenti in output

Perchè usare le funzioni?

  • Riusabilità = una funzione può essere usata più volte, senza necessità di riscrivere ogni volta il codice sorgente (istruzioni) che essa contiene

  • Leggibilità del codice = un programma che risolve un problema complesso può essere suddiviso in più sotto-programmi (funzioni), ognuno dei quali risolve un sotto-problema

  • Gestibilità del codice

Matlab mette già a disposizione diverse funzione, dette funzioni built-in.

Variabili di output = sono quelli i cui valori vengono calcolati dalla funzione, utilizzando i valori delle variabili di input. Esse sono racchiuse tra parentesi quadre (che sono facoltative quando c’è solo un output)

Variabili di input = sono racchiuse da parentesi tonde

La parola function nella riga di definizione della funzione deve essere scritta in lettere minuscole.

All’interno di una funzione è possibile invocare uno o più funzioni user-defined e/o funzioni built-in di matlab. Le funzioni user-defined per poter essere invocate devono essere state precedentemente salvate nel relativo M-file function.

Salvare una funzione user-defined in un M-file function

Il nome della funzione (nome_funzione) deve essere uguale al nome del file in cui sarà salvata tale funzione. Un M-file function ha estensione .m ed il suo contenuto deve iniziare con la parola chiave function (seguito da eventuali parametri di input ed output).

Ogni M-file function ha un proprio workspace, separato dal workspace mostrato in matlab. Tutte le variabili esterne all’interno dell’M-file function vengono dette locali ad esso. Esse esistono soltanto all’interno della funzione stessa, non vengono viste dall’ambiente matlab o da altre eventuali M-file function chiamanti.

Una volta memorizzata la funzione user-defined nel relativo M-file function (nella current directory), tale funzione può essere invocata dalla Command Window in matlab.

I valori restituiti in output da una funzione possono essere assegnati a variabili, che saranno visibili nel workspace di matlab

N.B. il primo parametro attuale deve corrispondere al primo parametro formale, il secondo parametro attuale deve corrispondere al secondo parametro formale e così via

I file

I file possono essere visti come contenitori permanenti di informazioni. Il sistema operativo si occupa della loro gestione, offrendo ai programmatori la possibilità di:

  • aprire/chiudere un file

  • leggere/scrivere un file

  • etc

Potrebbe essere necessario:

  • leggere un file e memorizzarlo in una variabile

  • scrivere un file

Apertura e chiusura di un file

La funzione fopen permette di aprire un file, memorizzato nel percorso indicato da percorso_del_file nella modalità d’apertura specificata da modalita_apertura

La modalità di apertura (modalita_apertura) può essere in:

  • scrittura (modalita_apertura = “w”)

  • lettura (modalita_apertura = “r”)

  • scrittura e lettura (modalita_apertura = “w+” o modalita_apertura = “r+”)

  • append (modalita_apertura = “a”) = apre un file esistente o crea un nuovo file in scrittura, posizionandosi alla fine di tale file

La funzione fopen restituisce il valore fid (file identifier), che è un identificatore associato al file aperto.

La funzione fclose chiude il file identificato da fid

Scrittura file

Le principali funzioni utilizzate da matlab per la scrittura su file sono fwrite ed fprintf (il file dev’essere stato precedentemente aperto mediante la funzione fopen).

fwrite = scrive un array, passato come parametro, su un file specificato (help fwrite per maggiori dettagli).

fprintf = scrive su file, secondo un formato specificato dall’utente (help fprintf per maggiori dettagli).

Lettura di file

Le principali funzioni utilizzate da matlab per la lettura di file sono fread ed fscanf (il file dev’essere stato precedentemente aperto mediante la funzione fopen).

fread = legge un array, di lunghezza specificata, da un file indicato tramite parametro (help fread per maggiori dettagli).

fscanf = legge da file, specificando esplicitamente il formato dei dati (help fscanf per maggiori dettagli)

Lettura e scrittura file

In generale, i passi per copiare un file in un altro sono i seguenti:

  1. aprire file sorgente e file destinazione

  2. fid = fopen (percorso_del_file, modalita_apertura)

  3. leggere le linee del file sorgente, una per una, e ,e memorizzarle in una variabile

  4. linea = fgetl (fid)

  5. scrivere tali linee nel file di destinazione

  6. fprintf (fid, formato, variabili)

  7. chiudere file sorgente

  8. fclose (fid)

Importare dati da file

Con la funzione importdata è possibile importare (mediante un solo comando) i dati da diversi tipi di file (help importdata per maggiori dettagli)

N.B. non è necessario che il file sia stato precedentemente aperto

N.B. per importare nel workspace di matlab dati letti da file, si consiglia fortemente l’utilizzo di questa funzione

Importare dati da file mediante interfaccia grafica

Tramite la funzione uiimport è possibile selezionare, tramite interfaccia grafica, diverse opzione per l’input dei dati (help uiimport per maggiori dettagli)

N.B. non è necessario che il file sia stato aperto precedentemente

 

Cliccando su finish, nel workspace di matlab saranno importate le variabili selezionate.

Importare i dati da file tramite comandi semplici

ASCII = per poter elaborare dati generati da applicazione esterne a matlab è possibile importarli. Se sono nella stessa cartella

  • sintassi: load nome_file.estensione

Se non sono nella stessa cartella

  • load (“path_del_file/nome_file.estensione”)

Excel = i dati da una cartella excel possono essere caricati in una matrice A con sintassi

  • A = xlsread (“nome_file”)

se si vuole importare i dati numeric nell’array A ed i testi nell’array B si usa:

  • [A, B] = xlsread (“nome_file”)

Salvare e caricare variabili

save = permette di salvare le variabile create nell’area di lavoro in un file “.mat”:

  • sintassi: save nome_file.mat

load = dopo aver salvato le variabili nel file .mat è possibile caricarle nell’area di lavoro con il comando load

  • sintassi: load nome_file

Operatori relazionali

- Basati sui principi della Logica Booleana

- Il loro scopo è quello di fornire risposte di tipo vero/falso a domande riguardanti il

confronto di relazioni tra oggetti

- Più precisamente, gli operatori relazionali confrontano relazioni tra

- Tipi numerici

- Array, matrici e scalari

- Stringhe

- Intere espressioni

- Il risultato di una comparazione può essere vero (1) oppure falso (0)

- In MATLAB gli operatori relazionali possono operare direttamente anche su array e

matrici

In MATLAB

- Un confronto falso da risultato 0

- Un confronto vero da risultato 1 (o un valore diverso da 0)

Operatori logici

- Gli operatori logici forniscono un modo per combinare o negare espressioni

relazionali

- Operatori logici di base: AND, OR e NOT

Come visto nella prima parte del corso, ciascun operatore logico può essere

specificato mediante una tavola di verità

N.B.

- Non va confuso l’operatore & con l’operatore &&

- Non va confuso l’operatore | con l’operatore ||

Ordine di precedenza dei tipi di operatori

Strutture fondamentali di MATLAB

- Analogamente ad altri linguaggi di programmazione, MATLAB fornisce tre strutture di controllo fondamentali:

  • sequenza =  è definita dalla sequenza lessicografica delle istruzioni

  • selezione =  le strutture selettive o decisionali:

  • ci consentono di scrivere programmi in grado di prendere delle

decisioni;

  • sono implementate mediante istruzioni condizionali

  • possono essere implementate in MATLAB mediante i costrutti IF

(e sue varianti) e SWITCH-CASE

  • in generale, il costrutto IF contiene una o più clausole if (se),

else (altrimenti) ed elseif (altrimenti se)

  • Iterazione

Costrutto IF

Selezione semplice (sintassi MATLAB)

if espressione

      blocco_istruzioni

end

- Se  l’espressione è vera (1) allora le istruzioni del blocco (blocco_istruzioni) sono eseguite

- Se l’espressione è falsa (0) allora le istruzioni del blocco (blocco_istruzioni) non sono eseguite

Quando un processo decisionale comporta più azioni, è possibile utilizzare, insieme alla clausola if, anche le seguenti clausole:

  • else = caratterizza una selezione a due vie

  • elseif = caratterizza una selezione “a cascata”

Le strutture decisionali possono essere annidate

Una struttura può essere inclusa all’interno di un’altra struttura che, a sua volta, può contenerne un’altra e così via…

Il rientro verso destra di alcune righe del codice mette in evidenza i gruppi delle istruzioni associate a ciascuna clausola end

Costrutto switch-case

Il costrutto switch-case consente di selezionare un gruppo di istruzioni da eseguire, in base al valore di una variabile presa in input. Tale costrutto risulta essere utile per le enumerazioni ma poco appropriato per gli intervalli

Strutture iterative

Se una sezione di codice può essere inizialmente ripetuta, essa deve essere inserita in una struttura iterativa (o ciclo)

Ciclo (o loop) = è una struttura di controllo che permette di ripetere l’esecuzione di istruzioni per un certo numero di volte

Iterazione = è la ripetizione di un ciclo

Matlab fornisce due tipologie di strutture iterative

  • ciclo for = utilizzato quando il numero di iterazioni è noto a priori

  • ciclo while = utilizzato quando il numero di iterazioni non è noto a priori. Il ciclo termina quando è soddisfatta una determinata condizione

Ciclo for

L’espressione m:s:n assegna il valore iniziale m alla variabile di ciclo, che viene incrementata del valore s (detto step o incremento).

Le istruzioni (blocco_istruzioni) vengono eseguite una sola volta per ogni iterazione, utilizzando il valore corrente della variabile di ciclo.

L'elaborazione continua finché la variabile di ciclo supera il valore finale per n.

Il ciclo for risulta essere molto utile per la manipolazione di array e matrici

Ciclo while

Il ciclo while è estremamente utile quando non è noto a priori il numero di iterazione che dovranno essere eseguite. Bisogna prestare attenzione alle condizioni di terminazione del ciclo, poiché potrebbe accadere che il ciclo non abbia mai fine.

Ciclo do/while

Matlab non fornisce in maniera diretta il ciclo do/while, è comunque possibile simulare il comportamente del do/while utilizzando il ciclo while nel modo seguente:

Break e continue

Le clausole break e continue possono essere usate all’interno di un ciclo per terminare o modificare l’esecuzione del ciclo stesso.

Break = termina il ciclo, anche se non si è raggiunta la fine dello stesso. Il flusso di esecuzione del programma salta alla prossima istruzione fuori dal ciclo.

Continue = salta un’iterazione del ciclo, ma fa sì che il flusso di esecuzione rimanga comunque all’interno del ciclo stesso. Il flusso di esecuzione del programma salta alla fine del ciclo (bypassando tutte le istruzioni presenti tra la clausola continua e quella end) e comincia con la prossima iterazione del ciclo.

Grafici in matlab

Plot = è un comando

plot (x, y) = matlab genera un grafico basandosi sull’array x per l’asse x e sull’array y per l’asse y (gli array x e y devono essere della stessa lunghezza)

plot (x) = matlab genera un grafico lineare basandosi sull’array x sia per l’asse x che per l’asse y. Ciascun punto ha lo stesso valore sia per la coordinata sull’asse x che per quella sull’asse y.

Possiamo salvare un grafico per poterlo usare altrove, andando sul menù file > save as.

Mediante la funzione plot è anche possibile personalizzare il grafico, per quanto riguarda:

  • colore = linea e indicatori (detti anche marcatori o simboli)

  • stile = linea e indicatori

Hold on = è un comando che permette di creare un grafico che rappresenti più informazioni, mediante l’uso di più indicatori e/o linee.

Ogni volta che si utilizza il comando plot, esso sovrascrive l’ultimo grafico che è stato creato (a meno che non venga utilizzato il comando hold on).

Figure = è un comando che permette di creare/gestire più istanze di grafici contemporaneamente, senza sovrascriverne nessuna.

Close all = è un comando per chiudere tutte le istanze

Subplot = è un comando che permette di creare più sottografici all’interno di una singola figura

subplot (m, n, p):

  • crea una figura partizionata come una griglia, inizialmente vuota, composta da m righe ed n colonne

  • p indica una posizione all’interno della griglia

Una volta specificata con subplot la posizione all’interno della griglia, sarà possibile utilizzare la funzione plot (con gli opportuni parametri) per creare un sotto-grafico in tale posizione.

Matlab fornisce anche un editor visuale per modificare le varie proprietà del grafico.

Scatter plot

Scatter (x,y) = è una funzione che crea un grafico a dispersione nella posizione specificato dai vettori di input x e y. I dati memorizzati nelle variabili x e y vengono utilizzati per creare un grafico a dispersione nell'output. Assicurati che la lunghezza della variabile x e y sia la stessa. In caso contrario, MATLAB mostrerà un errore.

Per impostazione predefinita, la funzione scatter () utilizza indicatori circolari per tracciare i dati forniti.

Altre funzioni matlab

Derivata

nome_derivata1 = diff(nome_funzione, variabile)

derivata secondo

nome_derivata2 = diff (nome_derivata1)

oppure

nome_derivata2 = diff (nome_funzione, variabile, 2)

Integrale

Integrale indefinito

nome_integrale= int (nome_funzione, variabile)

Integrale definito

nome_integrale= int (nome_funzione, variabile, estremi integrale)

Estremi integrale = prima quello in basso e poi quello in alto

 

Limiti

 

 

 

 

 

 

 

 

 

Soluzione di equazione

round (x) = arrotonda un certo x. Se x:

  • x 4    si arrotonda per difetto

  • x 5    si arrotonda per eccesso

ceil (x) = arrotonda sempre per eccesso

floor (x) = arrotonda sempre per difetto

abs (x) = valore assoluto

real (x) = parte reale complessa

imag (x) = parte immaginaria complessa

diag (x) = seleziona la diagonale di una matrice

flag = è usato nei codici di verifica

randi (max, n) = genera numeri pseudocasuali da 1 fino a max in una matrice n n

mod = da il resto di una divisione









Commenti