Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli...

28
Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere l’input degli utenti e formattare i dati di output. Si tratta di comandi di formattazione e visualizzazione

Transcript of Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli...

Page 1: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Corso di Matlab_Simulink per Ingegneria 3

I comandi input output permettono di ottenere l’input degli utenti e formattare i dati di output.

Si tratta di comandi di formattazione e visualizzazione

Page 2: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Comandi input/output

disp(A) visualizza il contenuto, non il nome, dell’array A

disp(‘testo’) visualizza la stringa di testo racchiusa tra due apici

format controlla il formato di visualizzazione dell’output sullo schermo

fprintf controlla il formato dell’output sullo schermo e su file

x=input(‘testo’) visualizza il testo specificato, attende ’input’ dall’utente dalla tastiera e registra il

valore della variabile x

x=input(‘testo’,’s’) visualizza il testo specificato, attende l’input dall’utente dalla tastiera e lo registra come stringa nella variabile x

Page 3: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Formati di visualizzazione

Tutti i calcoli vengono eseguiti in Matlab i doppia precisione

format consente di impostare il formato con il quale vengono visualizzati i valori numerici.

Tale istruzione consente di selezionare i seguenti formati:

format default equivale al formato short

format short formato a virgola fissa con 5 cifre

format long formato a virgola fissa con 15 cifre

format short e formato a virgola mobile con 5 cifre

format long e formato a virgola mobile con 15 cifre

format short g formato migliore tra quello a virgola fissa e mobile con 5 cifre

format long g formato migliore tra quello a virgola fissa e mobile con con 15 cifre

Page 4: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Formati di visualizzazione ( continuazione)

format hex formato esadecimale

format + formato compatto. I simboli +,- e blank sono usati per valori positivi negativi e nulli. Le parti immaginarie

sono ignorate

format bank formato fisso con due cifre decimali

format rat approssimazione razionale

format compact elimina i caratteri extra di nuova riga (line-feed)

per una visualizzazione più compatta

format loose annulla l’effetto di format compact

Page 5: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Formati di scrittura su file

fprinf(‘format’,A,…) scrive gli elementi della array A e tutti gli argomenti aggiunti dell’array,secondo il formato specificato nella stringa ‘formato’

Struttura di format % [-][numero1.numero2]C

[-] specifica l’allineamento a sinistra

numero1 specifica la larghezza minima del campo

numero2 specifica il numero di cifre decimali

C contiene i codici di controllo e di formattazione

Page 6: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Formati di scrittura su file (continuazione)

C codici di controllo e di formattazione

Codici di controllo

\n avvia una nova riga (linefeed)

\r inizio di una nuova riga (carriage return)

\b spazio bianco (blackspace)

\t tabulatore (tab)

‘’ apice o apostrofo

\\ carattere backslash \

%% carattere percentuale %

Codici di formattazione

%e notazione scientifica con e minuscola

%E notazione scientifica con E maiuscola

% f formato decimale

%g formato più corto fra %e e %f.

Page 7: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni

Matlab possiede molte funzioni già disponibili in files con estensione .m :

Funzioni matematiche di base

ma l’utente può crearne altre utilizzando M-files:Funzioni definite dall’utente

In generale una funzione prevede delle variabili in ingresso e delle variabili in uscita

Page 8: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni matematiche di baseTipiche funzioni matematiche di base

F. Esponziali

exp(x) calcola ex

sqrt(x) calcola la radice quadrata di x

F. Logaritmiche

log(x) calcola il logaritmo naturale di x

log10(x) calcola il logaritmo decimale (in base 10)

Page 9: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni matematiche di base

Tipiche funzioni matematiche di base

F. Complesse

abs(x) calcola il valore assoluto di x

angle(x) calcola la fase di un numero complesso

conj(x) calcola il numero complesso-coniugato di x

imag(x) rende la parte immaginaria di un numero complesso x

real(x) rende la parte reale di un numero complesso x

Page 10: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

F. Numeriche

ceil(x) approssima x al numero intero più vicino verso infinito

fix(x) approssima x al numero intero più vicino verso lo zero

floor(x) approssima x al numero intero più vicino verso - infinito

round(x) approssima x al numero intero più vicino

sign(x) calcola il segno di x e rende :

+1 se x > 0

0 se x = 0

-1 se x < 0

Page 11: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni trigonometriche

cos(x), sin(x), tan(x) e cot(x) coseno, seno, tangente e cotangente di x

acos(x), asin(x), atan(x) e acot(x) arcocoseno, arcoseno, arcotangente, arcocotangente di x

sec(x) e csc(x) secante e cosecante di x

cosh(x), sinh(x), tanh(x) e coth(x) coseno iperbolico, seno iperbolico, sech(x) tangente iperbolica e cotangente

iperbolica e secante iperbolica di x

asec(x) e acsc(x) arcosecante e arcocosecante di x

aosh(x), sinh(x), tanh(x) e coth(x) arcocoseno iperbolico, arcoseno iperbolico, csech(x) arcotangente iperbolica e arcocotangente

iperbolica e cosecante di xatan2(y,x) arcotangente nei quattro quadranti (+pi:-pi)

Page 12: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni definite dall’utente

Vengono definite attraverso M-file, detti file di funzione.

Nei file di funzione tutte le variabili sono locali: ossia i loro valori sono disponibili solo all’interno della funzione.

Essi sono particolarmente utili quando occorre ripetere una serie di comandi più volte.

Page 13: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni definite dall’utente

Definizione della funzione

La prima riga di un file di funzione deve iniziare con la definizione della funzione con la quale:

•si distingue il file come file di funzione dai file script*

•si nomina la funzione e

•si definisce l’elenco dei parametri di input e di output

* Un script-script viene eseguito semplicemente digitando il su nome senza l’estensione m.

Page 14: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni definite dall’utente

Le variabili di input specificate nella riga di definizione della funzione sono locali per quella funzione, questo:

• consente di usare altri nomi di variabili quando viene chiamata la funzione e

•fa si che tutte le variabili all’interno della funzione vengono cancellate dopo che la funzione è stata eseguita, tranne le variabili che figurano nell’elenco della variabili di output utilizzate nella chiamata di funzione

Page 15: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Sintassi della riga di definizione della funzione

function[var. di output]=nome_funzione(var. di input)

•Le variabili di output devono essere racchiuse tra parentesi quadre

•Le variabili di input devono essere racchiuse tra parentesi tonde

•Il nome della funzione deve essere uguale al nome del file con estensione m, in cui sarà salvata la funzione.

Page 16: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Sintassi della riga di richiamo della funzione

Occorre digitarla nel file principale in corrispondenza della riga di programma nella quale si vuole richiamare la function

[var. di output]=nome_funzione(var. di input)

•Le variabili di output devono essere racchiuse tra parentesi quadre

•Le variabili di input devono essere racchiuse tra parentesi tonde

•Il nome della funzione deve essere uguale al nome del file con estensione m, in cui sarà salvata la funzione.

Page 17: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Comandi per trovare punti singolari di una funzione

Determinazione degli zeri di una funzione•Per le funzioni polinomiali si usa roots•Per tutte le altre funzioni si usa fzero

Detrminazione del minimo di una funzione

Si usa fmin e fmins

Page 18: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Sintassi dei comandi per trovare minimi e zeri di una funzione

fmin(‘funzione’,x1,x2) rende il valore x nell’intervallo [x1,x2] che corrisponde a un mini o della funzione di una variabile descritta dalla stringa ‘funzione’

fmins(‘funzione’,x0) usa il vettore iniziale x0 per trovare un minimo della funzione di più variabili descritta dalla stringa ‘funzione’

fzero(‘funzione’,x0) usa il vettore iniziale x0 per trovare uno zero della funzione di una variabile descritta dalla stringa ‘funzione’

Page 19: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

I comandi fzero, fmin e fmins hanno forme sintatiche alternative che consentono di specificare la precisione richiesta per la soluzione o il numero di passaggi da effettuare prima di interrompere la routine dei comandi.

Per ulteriori dettagli utilizzare in modalità ‘command window’ il comando Help .

Tali funzioni possono essere utili per risolvere problemi semplici di ottimizzazione

Page 20: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Istruzioni di controllo

for ripetizione di un insieme di istruzioni per un numero predeterminato di interazioni ( deve terminare con end)

while ripetizione di un insieme di istruzioni finché una determinata condizione rimane vera (deve

terminare con end)

if istruzione condizionale (deve terminare con end) può utilizzare else e elseif

else identifica un blocco di istruzioni alternative

elseif esegue un blocco di istruzioni se è soddisfatta una condizione alternativa

end termina le istruzioni if, for e while

Page 21: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Istruzioni di controllo (continuazione)

break termina l’esecuzione di un ciclo for o while

switch indirizza il controllo di un programma confrontando l’espressione di input con le espressioni associate alle clausole case

case utilizzato con switch per controllare l’esecuzione di un programma

findstr(‘s1’,’s2’) date le stringhe di caratteri s1 e s2, trova gli indici iniziali di qualsiasi ricorrenza della stringa più corta all’interno della stringa più lunga

Page 22: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Operatori relazionali

< minore

<= minore o uguale

> maggiore

>= maggiore o uguale

== uguale~= diverso*

* Il simbolo ~ si digita tenendo premuto alt e digitando 126 sul tastierino numerico

Page 23: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Operatori logici e funzioni logiche

Matlab ha 4 operatori logici o booleani e una serie di funzioni logiche

Operatori logici

~ NOT l’istruzione ~ A rende una array delle stesse dimensioni di A; con elementi pari a 1 se quelli corrispondenti di A sono nulli altrimenti sono pari a 0

& AND l’istruzione A & B restituisce un array delle stesse dimensioni di A e B; gli elementi del nuovo array sono pari a 1 se i corrispondenti elementi di A e B sono entrambi diversi da 0 altrimenti sono pari a 0.

Page 24: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

| OR l’istruzione A | B rende una array delle stesse dimensioni di A e B; con elementi pari a 1 se almeno 1 dei due elementi corrispondenti di A e B è diverso da 0; e pari a 0 se entrambi gli elementi di A e B sono nulli.

xor(A,B) OR eslcusivo

l’istruzione di xor(A,B) restituisce un array delle stesse dimensioni di A e B; gli elementi del nuovo array sono pari a 1 se uno solo dei due elementi corrispondenti di A e B è diverso da 0 (non entrambi); sono pari a 0 se entrambi gli elementi di A e B sono nulli o diversi da 0.

Page 25: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni logiche

any(x) restituisce uno scalare , che è pari a 1 se almeno uno degli elementi del vettore x è diverso da zero, 0 negli altri casi

any(A) restituisce un vettore riga che ha lo stesso numero di colonne della matrice A e che contiene 1 e 0 in funzione del fatto che la corrispondente colonna di A contieneoppure no almeno un elemento diverso da 0.

all(x) restituisce uno scalare, che è pari a 1 se tutti gli elementi del vettore x sono diversi da 0, 0 negli altri casi

Page 26: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni logiche

find(x) crea un array che contiene gli indici degli elementi non nulli degli array x

[u,v,w]= find(A) crea gli array u e v che contengono gli indici delle righe e delle colonne degli elementi non nulli della matrice A, e l’array w che contiene i valori degli elementi non nulli. L’array w può essere omesso.

finite(A) restituisce un array della stessa dimensione di A i cui elementi sono pari a 1 se i corrispondenti elementi di A sono valori finiti, 0 negli altri casi.

Page 27: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni logiche

isnan(A) restituisce un array della stessa dimensione di A i cui elementi sono pari a 1 se i corrispondenti elementi di A sono pari a “NAN”(Not a Number, numero non definibile), 0 negli altri casi

isinf(A) restituisce un array della stessa dimensione di A i cui elementi sono pari a 1 se i corrispondenti elementi di A sono pari a “INF”, 0 negli altri casi

Page 28: Corso di Matlab_Simulink per Ingegneria 3 I comandi input output permettono di ottenere linput degli utenti e formattare i dati di output. Si tratta di.

Funzioni logiche

isempty(A) restituisce 1 se A è una matrice vuota, 0 negli altri casi.

isreal(A) restituisce 1 se A non contiene elementi con parti immaginarie, 0 negli altri casi