Upload
vinnie
View
38
Download
1
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
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
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 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)
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 xatan2(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 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 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
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