Sei sulla pagina 1di 39

Dept.

of Aerospace Engineering
University of Pisa

Corso: Dinamica del Volo

INTRODUZIONE AL MATLAB®

Ing. Francesco Schettini

e-mail : f.schettini@ing.unipi.it

Dinamica del Volo Introduzione al Matlab 1


Dept. of Aerospace Engineering
University of Pisa

Cos’è Matlab?
MATLAB® “Matrix laboratory” è un potente strumento di
calcolo nonché un linguaggio di programmazione.
Permette di integrare calcoli, visualizzazioni e programmi in
modo semplice grazie ad un ambiente di lavoro nel quale
problemi e soluzioni possono essere espressi con notazioni
matematiche semplici

Applicazioni:

• Calcoli matematici
• Sviluppo di algoritmi
• Sviluppo di modelli e simulazioni
• Analisi e visualizzazione di dati
• Realizzazioni di grafici bidimensionali e tridimensionali

Dinamica del Volo Introduzione al Matlab 2


Dept. of Aerospace Engineering
University of Pisa

I toolbox di Matlab
Matlab è inoltre dotato di un serie di applicazioni che
risolvono particolari classi di problemi. Queste applicazioni
sono realizzate medianti funzioni Matlab (“M-files”)
organizzate in toolbox.

Principali toolbox
• Simulink
• Control System
• State Flow
• Real Time Workshop
• Neural Network
• …...

Dinamica del Volo Introduzione al Matlab 3


Dept. of Aerospace Engineering
University of Pisa

• L’ambiente Matlab
- Matlab desktop
- Current Directory
- Workspace
- Editor/Debugger
• Espressioni matematiche in Matlab
- Costruzione di Variabili
- Rappresentazione Numerica
- Operatori Matematici
- Operatori per Array
- Funzioni Comuni
- Significato della punteggiatura
- Comandi di gestione della memoria
• Funzioni Grafiche
- Comandi principali ed esempi
Dinamica del Volo Introduzione al Matlab 4
Dept. of Aerospace Engineering
University of Pisa

• Programmi in Matlab: gli M-file


- Esempi di programmi
• Costrutto if, else, elseif
- Sintassi ed esempi
• Costrutto for
- Sintassi ed esempi
• Costrutto while
- Sintassi ed esempi
• Le Function in Matlab
- Sintassi
- Esempio 1: function con singolo output
- Esempio 2: function con due output
- Esempio 3: function con output vettoriale
- Esempio 4: function con variabili globali
• Manuali e Comando Help
Dinamica del Volo Introduzione al Matlab 5
Dept. of Aerospace Engineering
University of Pisa

M
a
t
l
a
b
immissione di variabili ed
D esecuzione di M-files

e
s
k
t
o
p

Dinamica del Volo Introduzione al Matlab 6


Dept. of Aerospace Engineering
University of Pisa

Current Directory

Dinamica del Volo Introduzione al Matlab 7


Dept. of Aerospace Engineering
University of Pisa

Workspace

Dinamica del Volo Introduzione al Matlab 8


Dept. of Aerospace Engineering
University of Pisa

Editor/Debugger

Dinamica del Volo Introduzione al Matlab 9


Dept. of Aerospace Engineering
University of Pisa

Espressioni matematiche in Matlab


Per la costruzioni delle espressioni matematiche, vengono usati i
seguenti elementi:
1) variabili
2) numeri
3) operatori
4) funzioni
Costruzione di variabili
Non è necessario dichiarare alcun tipo di variabile, né indicarne la
dimensione. Ad esempio il comando

num_studenti = 25

Crea automaticamente una variabile scalare di nome “num_studenti”


alla quale viene assegnato il valore 25.

Dinamica del Volo Introduzione al Matlab 10


Dept. of Aerospace Engineering
University of Pisa

il comando: num_studenti = [5 20]

Crea automaticamente una vettore riga con nome “num_studenti” ed


avente dimensione pari a due. Il primo elemento è 5 ed il secondo è 20.

il comando: num_studenti = [5;20]

Crea automaticamente una vettore colonna con nome “num_studenti” ed


avente dimensione pari a due. Il primo elemento è 5 ed il secondo è 20.

il comando: num_studenti = [5 20;3 1]

Crea automaticamente una matrice 2x2 con nome “num_studenti”

num_studenti = 5 20
3 1

Dinamica del Volo Introduzione al Matlab 11


Dept. of Aerospace Engineering
University of Pisa

Matlab permette di creare anche delle variabili non numeriche ma di tipo


“stringa”. Per assegnare una stringa bisogna racchiudere i caratteri tra
due apici. Il comando:
nome_studente = ‘Marco’

Crea automaticamente una variabile di tipo “stringa” con nome


“nome_studente” alla quale viene assegnato il valore Marco.

Sulle variabili di tipo “stringa” si possono effettuare tutta una serie di


operazioni. Le funzioni maggiormente usate sono:

num2str(A) permette di trasformare la variabile A di tipo numerico in


una variabile di tipo “stringa”

str2num(A) permette di trasformare la variabile A di tipo “stringa” in


una variabile di tipo numerico
strcat(A,B) permette di concatenare la “stringa” A a quella B
Dinamica del Volo Introduzione al Matlab 12
Dept. of Aerospace Engineering
University of Pisa

Dinamica del Volo Introduzione al Matlab 13


Dept. of Aerospace Engineering
University of Pisa

Rappresentazione Numerica

3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i

• Notazione decimale
• Notazione scientifica usa “e” per rappresentare una potenza di dieci
• “ i ” or “ j ” costituiscono l’unità immaginaria

Operatori Matematici

+ addizione
- sottrazione
* moltiplicazione
/ divisione
^ elevamento a potenza
‘ complesso coniugato
Dinamica del Volo Introduzione al Matlab 14
Dept. of Aerospace Engineering
University of Pisa

Operatori per array + addizione


- sottrazione
* moltiplicazione
.* moltiplicazione elemento per elemento
/ divisione
./ divisione elemento per elemento

Funzioni comuni abs(x) valore assoluto di x


sqrt(x) radice quadrata di x
cos(x) coseno di x
sin(x) seno di x
tan(x) tangente di x
exp(x) esponenziale di x
log(x) logaritmo naturale di x
log10(x) logaritmo in base 10 di x
det(x) determinate di x
inv(x) inversa di x
length(x) lunghezza del vettore x
size(x) numero righe e numero
colonne di x
Dinamica del Volo Introduzione al Matlab 15
Dept. of Aerospace Engineering
University of Pisa

Dinamica del Volo Introduzione al Matlab 16


Dept. of Aerospace Engineering
University of Pisa

Significato della punteggiatura

; in fondo alla riga evita che il risultato di una operazione venga


stampato nella command window
; dentro le parentesi quadre equivale a fine riga
, dentro le parentesi quadre equivale ad uno spazio
: genera una serie

Comandi di gestione della memoria

who lista del contenuto della memoria

whos lista del contenuto della memoria con dettagli sulle variabili

clear all cancella il contenuto della memoria

Dinamica del Volo Introduzione al Matlab 17


Dept. of Aerospace Engineering
University of Pisa

Funzioni Grafiche

realizza il grafico della funzione v(u) avendo a


plot(u,v) disposizione le coppie ui, vi; u e v sono due vettori con
la stessa dimensione
xlabel(a) aggiunge la stringa “a” sotto l’asse x del grafico

ylabel(a) aggiunge la stringa “a” sotto l’asse y del grafico


title(a) imposta la stringa “a” come titolo del grafico

grid crea una griglia nel grafico

legend(a,b,c) crea una legenda al grafico usando le stringhe a, b e c

axis([xmin xmax ymin ymax]) Definisce l’intervallo di visualizzazione


(x-y) del grafico
hold on Permette di aggiungere un nuovo grafico a quello già
esistente con proprietà identiche

Dinamica del Volo Introduzione al Matlab 18


Dept. of Aerospace Engineering
University of Pisa

Esempio 1

Comandi di Matlab
•u=0:10/180*pi:2*pi;

•v=sin(u);

•plot(u*180/pi,v)

•xlabel('u (deg)')

•ylabel('v(u)')

•title('v=sin(u)')

•grid

Dinamica del Volo Introduzione al Matlab 19


Dept. of Aerospace Engineering
University of Pisa

Esempio 2

Comandi di Matlab
•u=0:10/180*pi:2*pi;

•ud=0:10:360;

•v1=sin(u);

•v2=sin(u+45*pi/180);

•v3=sin(u+90*pi/180);

•plot(ud,v1,ud,v2,ud,v3)

•grid

•xlabel('u (deg)')

•ylabel('v1,v2,v3')

•title('v1=sin(u),v2=sin(u+45),v3=sin(u+90)')

• legend('v1','v2','v3',0)

Dinamica del Volo Introduzione al Matlab 20


Dept. of Aerospace Engineering
University of Pisa

Esempio 3
Comandi di Matlab
•u=0:10/180*pi:2*pi;
•ud=0:10:360;
•v1=sin(u);
•v2=cos(u);
•plot(ud,v1,'k--')
•hold on
•plot(ud,v2,'*')
•hold off
•xlabel('u (deg)')
•ylabel('v(u)')
•title('v1=sin(u),v2=cos(u)')
•legend('v1','v2',0)
•grid

•axis([0 100 0 1])

Dinamica del Volo Introduzione al Matlab 21


Dept. of Aerospace Engineering
University of Pisa

% Programma che risolve un sistema lineare


M-file: esempio 1 %
% dato il sistema a x = b
% determina la soluzione x = inv(a)*b

clear all
format short e
a = [ 1 2 3 4
0 2 13 4
5 7 8 9
7 8 9 7 ];
b = [7 0 8 9]';
x = inv(a)*b

Dinamica del Volo Introduzione al Matlab 22


Dept. of Aerospace Engineering
University of Pisa

% Studio di funzione
% y=f(x)
% y=(1+0.5x)/(1+x)

clear all
M-file: esempio 2 format short e
x=[0:1:50];
y=(1+0.5*x)./(1+x);
plot(x,y)
xlabel('x')
ylabel('y')
title('Studio della funzione y=(1+0.5x)/(1+x)')

Dinamica del Volo Introduzione al Matlab 23


Dept. of Aerospace Engineering
University of Pisa
% Studio di funzione con parametro
% y=f(x,alfa,beta)
% y=(1 + alfa beta x)/(1+ alfax)
clear all, close all
format short e
ysave = [];
beta = 1;
for alfa=0.4:0.1:0.8
x=[0:50]';
y=(1+alfa*beta*x)./(1+beta*x);
ysave = [ysave y];
% pause
end
figure
plot(x,ysave),xlabel('x'),ylabel('y')
title('Studio della funzione y=(1 + alfa beta x)/(1+ alfa x)')
legend('alfa=0.4','alfa=0.5','alfa=0.6','alfa=0.7','alfa=0.8','(beta=1)')

M-file: esempio 3

Dinamica del Volo Introduzione al Matlab 24


Dept. of Aerospace Engineering
University of Pisa
% Il programma traccia le seguenti curve
% - coefficiente di portanza
% - trazione necessaria
% - potenza necessaria
M-file: esempio 4 %
%
in funzione della velocità, nell'ipotesi
che k e Cdo non dipendano dal Mach.
(pag. 1/2) clear all
close all
% Dato un velivolo con le seguenti caratteristiche:
b = 40 ; % (m) apertura alare
S = 100 ; % (m^2) superficie di riferimento
W = 130000*9.81 ; % (N) peso
Cdo = 0.02 ;
k = 0.05 ; %
c = 0.7/3600 ; % (1/sec) consumo specifico
% Tracciare le curve della trazione necessaria e potenza
% necessaria per velocita' comprese tra 300 e 900 Km/h
ro = 1.225 ; % (Kg / m^3)
V = 300/3.6 : 1/3.6 : 700/3.6 ; % (m/s)
Cl = ( W / S ) ./ (0.5 * ro * V.^2) ;
Cd = Cdo + k * Cl.^2 ;
A = 0.5 * ro * S * Cdo .* V.^2 ;
B = 0.5 * ro * S * k * Cl.^2 .* V.^2 ;
Tn = A + B ;
C = A .* V ;
D = B .* V ;
Pn = C + D ;
figure,plot(V,Cl);grid;title('Coefficiente di portanza')
xlabel('V (m/s)');ylabel('Cl')
figure,plot(V,Tn,V,A,V,B);grid;title('Trazione necessaria')
xlabel('V (m/s)');ylabel('Tn (N)')
figure,plot(V,Pn,V,C,V,D);grid;title('Potenza necessaria')
xlabel('V (m/s)');ylabel('Pn (W)')

Dinamica del Volo Introduzione al Matlab 25


Dept. of Aerospace Engineering
University of Pisa

M-file: esempio 4
(pag. 2/2)

Dinamica del Volo Introduzione al Matlab 26


Dept. of Aerospace Engineering
University of Pisa

Costrutto if, else, elseif

valuta una espressione logica ed esegue un serie di


if, else operazioni in funzione del valore di tale espressione logica

operatori logici
sintassi if (espressione logica)
stato 1 - Equal ==
else - Not equal ~=
- Less than <
stato 2 - Greater than >
end - Less than or equal <=
- Greater than or equal >=
- Logical AND &
- Logical OR |
- Logical NOT ~

esempio 1 if num_studenti>25
condizione=‘molti studenti’
else
condizione =‘pochi studenti’
end
Dinamica del Volo Introduzione al Matlab 27
Dept. of Aerospace Engineering
University of Pisa

valuta più espressioni logiche ed esegue quelle


if, else, elseif operazioni la cui condizione logica risulta verificata

esempio 2 if num_studenti>25
condizione=‘molti studenti’;
elseif num_studenti==0
condizione =‘nessun studente’;
else
condizione =‘pochi studenti’;
end

Dinamica del Volo Introduzione al Matlab 28


Dept. of Aerospace Engineering
University of Pisa

if num_studenti>25
condizione=‘molti studenti’;
esempio 3 elseif num_studenti==0
(studenti.m) condizione =‘nessun studente’;
elseif num_studenti<0
disp(‘numero studenti non reale’);
else
condizione =‘pochi studenti’;
end

Dinamica del Volo Introduzione al Matlab 29


Dept. of Aerospace Engineering
University of Pisa

Costrutto for

for ripete per un fissato numero di volte una serie di operazioni

sintassi for index = start:incremento:end


operazione
end

esempio 1
x(1)=1;
for i= 2:5 x =
x(i)=2*x(i-1); [1 2 4 8 16 32]
end

Dinamica del Volo Introduzione al Matlab 30


Dept. of Aerospace Engineering
University of Pisa

esempio 2: costruzione di una matrice 3x3 identità

for i= 1:3
for j=1:3
if i==j
A(i,j)=1;
else
A(i,j)=0;
end
end
end

A=
1 0 0
0 1 0
0 0 1
Dinamica del Volo Introduzione al Matlab 31
Dept. of Aerospace Engineering
University of Pisa

Costrutto while

while ripete una serie di operazioni fin quando è verificata una


condizione logica

sintassi while (condizione logica)


operazione
end

esempio 1
i=1;x(1)=1;
x =
while i<=5
[1 2 4 8 16 32]
x(i+1)=2*x(i);
i=i+1;
end

Dinamica del Volo Introduzione al Matlab 32


Dept. of Aerospace Engineering
University of Pisa

Le function in Matlab

Le function sono M-file che accettano uno o più input e restituiscono


degli output
Le function operano su variabili contenute all’interno di in un proprio
workspace. Tale workspace è separato da quello cui si accede dal
Matlab Desktop

sintassi function [output]=nome_function(input)


operazione1
operazione2
operazione3
…..
output

Il nome del M-file contenente una function deve essere quello della
function stessa:
function [output]=nome_function(input) >>>>>nome_function.m

Dinamica del Volo Introduzione al Matlab 33


Dept. of Aerospace Engineering
University of Pisa

esempio 1: calcolo della media

?
Dinamica del Volo Introduzione al Matlab 34
Dept. of Aerospace Engineering
University of Pisa

esempio 2: calcolo della media e della deviazione standard


(function con due output)

Dinamica del Volo Introduzione al Matlab 35


Dept. of Aerospace Engineering
University of Pisa

esempio 3: calcolo della media e della deviazione standard


(function con output di tipo vettoriale)

Dinamica del Volo Introduzione al Matlab 36


Dept. of Aerospace Engineering
University of Pisa

esempio 4: calcolo dell’energia potenziale


(function con variabili global)

Dinamica del Volo Introduzione al Matlab 37


Dept. of Aerospace Engineering
University of Pisa

Manuali e comando help

L’“help window” dal menu a finestre permette di consultare sia il


manuale in linea (“Matlab Help”) sia una raccolta di esempi (“Demos”).
Questi ultimi sono molto utili per imparare ad usare le funzioni di
calcolo e di grafica di Matlab.

Si possono avere informazioni in modo rapido con il comando help.


Digitando sulla command window “help + nome_funzione” si hanno
delle informazioni su come usare la funzione indicata e sulle funzioni
correlate.

Digitando “lookfor + stringa” si ottiene l’elenco di tutte le funzioni nel


cui help compare la stringa indicata.

Comando utile: help ops, fornisce le liste degli operatori algebrici,


degli operatori di relazione, degli operatori logici e dei caratteri speciali

Dinamica del Volo Introduzione al Matlab 38


Dept. of Aerospace Engineering
University of Pisa

funzioni correlate alla


funzione “min”

Dinamica del Volo Introduzione al Matlab 39