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
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
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
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
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
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.
Funzioni matematiche di base Funzioni definite dall’utente 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
Funzioni matematiche di base Tipiche 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)
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
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
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 x atan2(y,x) arcotangente nei quattro quadranti (+pi:-pi)
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.
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.
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
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.
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.
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
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’
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
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
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
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
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.
|. OR. l’istruzione A | B rende una array | 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.
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 contiene oppure 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
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.
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
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