MATLAB Scopo della lezione l Programmare in Matlab
MATLAB
Scopo della lezione l Programmare in Matlab l l Funzioni Cicli Operatori relazionali Esercizi vari
l Script l l l Le funzioni I parametri in ingresso non modificabili le variabili usate sono messe nella memoria di lavoro di MATLAB Funzioni l script al quale si possono passare parametri in ingresso ed ottenerne in uscita - sintassi § § l y 1, …, yn -> parametri in uscita x 1, …, xn –> parametri in entrata le variabili usate all’interno sono locali function [y 1, …, yn] = nome_funzione(x 1, …, xn)
Le funzioni II l l l L’m file va salvato col nome_funzione. m l il nome del file deve essere identico a quello della funzione La funzione puo’ essere richiamata l dalla finestra di comando l all’interno di uno script l da altre funzioni digitando [y 1, …, yn]=nome_funzione(x 1, …, xn) Per poter richiamare la funzione ci dobbiamo mettere nella directory nella quale la salviamo
Esempio creiamo un m-file traccia. m nel quale implementiamo la funzione che calcola la traccia di una matrice variabile temporanea richiamiamo la funzione nella finestra di comando parametro in input
Ciclo for…end Ciclo incondizionato for i = n 1: passo: n 2 blocco di istruzioni end
Esercizio 1 Scrivere una funzione che sommi gli elementi di un vettore e moltiplichi il risultato per un intero n passato come parametro di input function s = somma(v, n)
Esercizio 2 Scrivere una funzione che faccia la media degli elementi di una matrice A l l [r c] = size(A) usare la funzione somma function m = media_matrix(A)
Operatori l Operatori relazionali: l l < <= > >= == = = si usano per confrontare tra di loro gli elementi di 2 matrici; il risultato dell’operazione sarà l l l 0 se la relazione è falsa 1 se la relazione è vera Operatori logici: l l & | si usano per combinare tra loro gli operatori relazionali
Esempio
Ciclo while…end Ciclo condizionato while condizione blocco di istruzioni end
If…else…end l Test condizionale if condizione 1 blocco di istruzioni elseif condizione 2 blocco di istruzioni else blocco di istruzioni end coinvolge un operatore relazionale. Se condizione 1 è vera si eseguono i comandi opzionali I comandi che seguono elseif sono eseguiti se condizione 2 è vera I comandi che seguono else sono eseguiti se le precedenti condizioni sono false
Esempio per stampare una stringa
Comandi “utili” l break -> per uscire in maniera forzata da un ciclo l l return -> interrompe l’esecuzione della funzione l l MATLAB salta all’istruzione che termina il ciclo si ritorna al programma da cui la funzione è stata chiamata Osservazione: l Privilegiare operazioni vettoriali ai cicli for…end e while…end
Inputoutput l l l input sprintf disp n = input(‘inserisci un intero’); s = sprintf(‘n = %d’, n); disp(s) disp(‘stringa di caratteri’)
Esercizio 3 Scrivere una funzione che ha l come output la soluzione del sistema Ax=b l verificare l. A quadrata l A non singolare l nel caso di A singolare o non quadrata ritornare una scritta di errore function x = risolvi_sistema_quadrato(A, b)
Esercizio 4 Scrivere una funzione che dato in input un intero positivo n restituisca il suo fattoriale l fare i test su n (n intero, positivo) function r = fattoriale(n)
Esercizio 5 Costruire una function che prenda in input un intero n>=3 e restituisca la matrice A ed un messaggio in cui si dica se A è singolare. La matrice A deve avere la seguente struttura: • La prima colonna: (1, 2, . . . , n-1, n, n-1, …, 2, 1) • L’ultima colonna: (1, 3, …, 2*n-1, …, 3, 1) • La prima riga: (1, 0, -1, …, -n+2, …, -1, 0, 1) • La diagonale: (1, 4, …, (n-1)^2, n^2, (n-1)^2, …, 4, 1) • Le altre componenti uguali a zero.
- Slides: 19