SlideShare uma empresa Scribd logo
1 de 51
Baixar para ler offline
Introduzione
     a MATLAB


Luca Zanni, Marco Prato

             Calcolo Numerico
Corsi di Laurea in Matematica e Informatica
MATrix LABoratory
MATLAB è nato principalmente come programma destinato alla
gestione di matrici. E’ un interprete di comandi in cui l’unità base
dei dati è un vettore o una matrice

I comandi possono essere forniti interattivamente o contenuti in
files su disco (m-files)

Comprende un vasto set di funzioni predefinite e numerose
librerie (toolbox) per svariate applicazioni che possono essere
ampliate

Ha una buona potenzialità grafica

Esistono versioni di MATLAB per Unix/Linux, Windows e MAC. I
files creati sono portabili da una piattaforma all’altra
Potenzialità di MATLAB
Calcolatrice




                              digitare 3 + 2

                              premere invio

                              risposta immediata!
Potenzialità di MATLAB
Calcolo matriciale

      >> A = magic(3)
      >> B = [4 5 0; 3 8 3; 4 9 1]
      >> A*B

      ans =

             59      102    9
             55      118   22
             51      110   29
Potenzialità di MATLAB
Soluzione di equazioni

      >> s = solve(‘cos(2*x)+sin(x)=1’)

      s=
      0
      pi
      1/6*pi
      5/6*pi
Potenzialità di MATLAB
Derivate di funzioni

>> syms x      % calcolo simbolico
>> f= 2*(sin(x+3)/(x+3))*(4*x^2);
>> diff(f)

ans =
8*cos(x+3)/(x+3)*x^2-8*sin(x+3)/(x+3)^2*x^2+16*sin(x+3)/(x+3)*x


>> pretty(ans)
                                2                   2
                 cos(x + 3) x       sin(x + 3) x        sin(x + 3) x
              8 ------------- - 8 ------------- + 16 ------------
                     x+3                        2          x+3
                                      (x + 3)
Potenzialità di MATLAB
Grafici 2D di funzioni

>> fplot(inline('2*(sin(x+3)/(x+3))*(4*x^2)'),[-10 10])
Potenzialità di MATLAB
Grafici 3D di funzioni

 >>   t = 0:pi/50:10*pi
 >>   plot3(sin(t),cos(t),t)
 >>   grid on
 >>   axis square
                               35

                               30

                               25

                               20

                               15

                               10

                               5

                               0
                               1

                                    0.5                                         1
                                                                          0.5
                                          0
                                                                      0
                                              -0.5
                                                               -0.5
                                                     -1   -1
Potenzialità di MATLAB
Grafici 3D di funzioni

>>   [X,Y,Z]= peaks(30)
>>   surfc(X,Y,Z)
>>   colormap hsv
>>   axis([-3 3 -3 3 -10 5])
>>   grid on
Potenzialità di MATLAB
Altri esempi di grafici 3D
Potenzialità di MATLAB
Altri esempi di grafici 3D                                              22%



>>       x = [1 3 0.5 2.5 2]                                   11%


>>       explode = [0 1 0 0 0]                                                      28%

>>       pie3(x,explode)
>>       colormap hsv                                            33%
                                                                              6%




                    90
                                  6
              120                     60


                              4

        150                                 30

                          2



                                                      >> theta = 2*pi*rand(1,50);
  180                                             0



                                                      >> rose(theta)
        210                                 330




              240                     300

                    270
Potenzialità di MATLAB
Altri esempi di grafici 3D


   >> Y = cool(7);
   >> bar3(Y,'detached')
   >> title('Detached')
Potenzialità di MATLAB
Altri esempi di grafici 3D
Avvio del programma

Avvio di MATLAB (Windows)

      Start    Programmi      Matlab (o icona sul desktop)


Avvio di MATLAB (Linux)

      Terminale                  INVIO
                     matlab
Schermata MATLAB




                     Command Window


  Workspace



   Command History
La linea di comando

La linea di comando è indicata da un prompt come in DOS: >>

Accetta dichiarazioni di variabili, espressioni e chiamate a tutte le
funzioni disponibili nel programma. Tutte le funzioni di MATLAB
non sono altro che file di testo, simili a quelli che l’utente può
generare con un text editor, e vengono eseguite semplicemente
digitandone il nome sulla linea di comando

MATLAB permette inoltre di richiamare le ultime righe di comandi
inseriti usando le frecce in alto e in basso

Help in linea

       Esempio: >> help cos
Comandi di uso generale

who: elenco delle variabili definite in memoria

whos: informazioni su tutte le variabili in memoria

clear: cancella tutte le variabili in memoria o una in particolare se
specificata (clear nome_variabile)

save: salva tutte le variabili in memoria sul file specificato, in vari
formati

load: richiama in memoria le variabili salvate sul file specificato

what: elenco di tutte le funzioni MATLAB nell’area di lavoro
(estensione .m) e dei file di dati che sono stati salvati (estensione
.mat)
Assegnazione di variabili costanti

>> a = 1.54

      “a” è il nome della costante, 1.54 il valore

>> a = 1.54;

      “;” non visualizza la risposta sullo schermo

>> 5
ans = 5

      “ans” è il nome della variabile di default

Di default MATLAB lavora in doppia precisione. Ogni numero
memorizzato in doppia precisione occupa 8 bytes
Operazioni aritmetiche

                     +     addizione
                     -     sottrazione
                     /     divisione
                     *     moltiplicazione
                     ^     potenza

                               3
                       3+5 − 2/3
                    x=         4
                        4(5 + 2 )
ATTENZIONE: l’intero calcolo va scritto in riga. E’ necessario un
uso adeguato delle parentesi () per le precedenze aritmetiche

      >> x = (3 + 5^3 – 2/3)/(4*(5 + 2^4))
      x = 1.5159
Operazioni aritmetiche
Visualizzazione dei numeri sul display:

>>    format type

 valori di type                   risultato                      pi
     short               5-digit scaled fixed point            3.1416

     short e               5-digit floating point            3.1416e+000

     short g       Best of 5-digit fixed or floating point     3.1416
                                                             3.141592653
      long              15-digit scaled fixed point          58979
                                                             3.141592653
     long e                15-digit floating point           589793e+000
                                                             3.141592653
     long g        Best of 15-digit fixed or floating point 58979
Variabili predefinite

pi    π

i,j   unità immaginaria

Inf   Infinito (1/0)

NaN   Not a Number (0/0)

eps   2.2204e-16 precisione di macchina
Assegnazione di matrici e array

Modi equivalenti di generare un vettore riga:
>> v = [1 5 8 12]
>> v = [1,5,8,12]

Modi equivalenti di generare un vettore colonna:
>> v = [1;5;8;12]
>> v = [1 5 8 12]’

Generazione di una matrice di dimensione 2 x 3:
>> m = [1 6 2; 3 9 1]
m=
      1      6      2

       3      9      1
Gli intervalli

MATLAB permette di definire intervalli numerici in modo semplice
ed automatico. Esistono per tale scopo specifici operatori e
funzioni

L’operatore “:” consente la generazione di intervalli equispaziati
Sintassi     valore iniziale : incremento : valore finale
N.B.: l’incremento di default è pari a 1

x   =   1:5       =>   x   =   [1   2 3 4 5]
x   =   0:2:10    =>   x   =   [0   2 4 6 8 10]
x   =   0:3:10    =>   x   =   [0   3 6 9]
x   =   0:1.5:9   =>   x   =   [0   1.5 3.0 4.5 6.0 7.5 9.0]
x   =   0:-1:-5   =>   x   =   [0   –1 –2 –3 –4 -5]
Gli intervalli

MATLAB permette di definire intervalli numerici in modo semplice
ed automatico. Esistono per tale scopo specifici operatori e
funzioni

L’operatore “linspace” crea un intervallo numerico prefissando il
numero di punti piuttosto che l’incremento
Sintassi    linspace(valore iniziale, valore finale, numero punti)
N.B.: il numero di punti di default è 100
>> s = linspace(1,10,6)

s=

  1.0000     2.8000    4.6000     6.4000    8.2000     10.0000
Operazioni sulle matrici

Accedere agli elementi di un vettore: v(i)

Accedere agli elementi di una matrice: m(i,j)

Estrarre una riga della matrice: row = m(i,:)

Estrarre una colonna da una matrice: col = m(:,j)

Modificare elementi: m(i,j) = #
Estrazione di sottomatrici
                           1 2 3
                        A=
                           4 0 6
                                 
                                



Estrarre la colonna 2         Estrarre una matrice 2 x 2
v = A(:,2)                    M = A(:,2:3)



        2                               2 3
     v=                             M =
                                          0 6
       0                                    
                                           
Matrici a blocchi
                          1 2
                        A=
                          3 4
                              
                             

Costruire una matrice 2 x 4 da A     B = [A,A]
                      1 2 1 2
                    B=
                      3 4 3 4
                              
                             
Costruire una matrice 4 x 2 da A     C = [A;A]
                          1    2
                                
                          3    4
                       C =
                                2
                            1
                                
                          3    4
                                
Funzioni utili lavorando con le matrici

eye(n)
eye(n)       matrice identica n x n

zeros(m,n)
zeros(m,n)   matrice m x n con tutti elementi uguali a 0

ones (m,n)   matrice m x n con tutti elementi uguali a 1

size(x)
size(x)      restituisce le dimensioni dell’array x

length(v)
length(v)    restituisce il numero di componenti del vettore v
Funzioni utili lavorando con le matrici

diag(M)
diag(M)     restituisce un vettore contenente la diagonale della
            matrice M

diag(v)
diag(v)     restituisce una matrice quadrata con il vettore v
            sulla diagonale e zero altrove

tril(M,i)
tril(M,i)   estrae dalla matrice M tutti gli elementi sulla e
            sotto la i-esima diagonale
            Di default si ha i = 0 (diagonale principale)

triu(M,i)
triu(M,i)   estrae dalla matrice M tutti gli elementi sulla e
            sopra la i-esima diagonale
            Di default si ha i = 0 (diagonale principale)
Esercizio
Creare una matrice in cui la prima riga sia composta dai numeri da
1 a 10, la seconda riga composta dai numeri da 11 a 20 e la e la
terza dai numeri da 21 a 30. Modificare la seconda riga in modo
da annullarne gli elementi.
     >> m = [1:10;11:20;21:30]

     m=

            1     2     3     4     5     6     7     8     9    10
           11    12    13    14    15    16    17    18    19    20
           21    22    23    24    25    26    27    28    29    30

     >> m(2,:) = 0

     m=

          1     2     3     4     5     6     7     8     9     10
          0     0     0     0     0     0     0     0     0     0
          21    22    23    24    25    26    27    28    29    30
Operazioni tra matrici
        1 2           1 0           0 3 1
      A=
        3 4        B=
                        −1 1       C =
                                        1 2 4
                                            
                                         

                                                 2     2
                                                        
                                                 2     5
                                   A+B
                                                        
                                                 0     2
Somma / differenza                 A–B
                                                        
                                                 4     3
                                                        
                                   A+C



                        ??? Error using = => +
                        Matrix dimensions must agree.
Operazioni tra matrici
                1 2             1 0
              A=
                3 4          B=
                                  −1 1 
                                       
                                     

                                             −1 2 
                                            
                                             −1 4 
           matriciale              A*B             
                                                  

Prodotto

                                             1 0
                                            
                                             − 3 4
           elemento per elemento   A .* B          
                                                  
Determinante / rango / inversa
                                 3 4 − 1
                                        
                  1 0
               B=
                  −1 1    D = 5 2 3 
                        
                               0 1 − 1
                                        

                  det(B)      1
Determinante
                                        anche B^(-1)
                  det(D)      0

Rango             rank(D)     2
                                       1 0 
                                       
                                       1 1 
                  inv(B)
                                            
                                           
Inversa
                  inv(D)      ?
Stringhe
In MATLAB una stringa è un vettore di caratteri:
>> s = ‘oste’;
>> s(1)
ans =
o
>> s(1) = ‘a’
s=
aste
>> s = [‘c’,s]
s=
caste
Operazioni sulle stringhe

str2num
str2           trasforma un array di caratteri numerici in un
               array di numeri (in formato double)

num2
num2str        trasforma un array di numeri in un array di caratteri
               numerici

str2mat
str2           trasforma una sequenza di stringhe in una matrice
               (ogni stringa della sequenza è una riga della matrice)

mat2
mat2str        converte una matrice numerica in una stringa
               contenente la sintassi MATLAB per la creazione di
               tale matrice

disp(‘text’)
disp           visualizza su schermo la stringa ‘text’
La programmazione
In MATLAB si possono realizzare degli m-file, ovvero file di
testo contenenti sequenze di comando e strutture di controllo
che vengono interpretate


I file prodotti mediante un editor di testo devono essere salvati
in un file con estensione .m, in una directory contenuta nel path


                             file .m


      macro                                        function
Le macro
Gli m-file di tipo macro operano sulle variabili contenute in
memoria, e non esistono variabili locali

Contengono una serie di comandi che vengono automaticamente
eseguiti quando si esegue la macro

Per eseguire un m-file basta          digitarne   il   nome   (senza
l’estensione) dalla riga di comando

Per creare una macro:
1. aprire un file nuovo ( File   New )
2. scrivere il codice della macro
3. salvare il file filename.m
4. eseguire da linea di comando >> filename + INVIO
Esempio

% ESEMPIO DI MACRO: calcola la matrice trasposta
% di una matrice A (presente in memoria) e ne
% visualizza l’output a schermo


Atrasp = A’;
disp(‘La trasposta della matrice A è’)
Atrasp
Le function

MATLAB permette di definire file di tipo funzioni. Tali funzioni
vanno scritte in modo identico agli m-file, tranne per l’intestazione
che è del tipo

function [variabili di uscita] =
                nomefunzione(variabili di ingresso)

N.B.: le funzioni vanno salvato in un file avente lo stesso nome
della funzione stessa. Tutte le variabili sono locali alla funzione,
per cui dopo la sua esecuzione non restano in memoria

La function viene chiamata da linea di comando con

        nomefunzione(valore_variabile_ingresso)
Esempio
% ESEMPIO DI FUNCTION: trasformare la macro
% precedente in una funzione


function [Atrasp] = trasposta(A)
Atrasp = A’;




>> mat_trasp = trasposta(A)


                              dalla linea di comando
Funzioni matematiche intrinseche
sqrt(x)
sqrt(x)       radice quadrata di x
round(x)      arrotondamento di x all’intero più vicino
fix(x)
fix(x)        parte intera di x
floor(x)
floor(x)      intero ‘sinistro’ più vicino a x
ceil(x)
ceil(x)       intero ‘destro’ più vicino a x

cos(x), sin(x), tan(x)
                tan(x)
cosh(x), sinh(x), tanh(x)
cosh(x), sinh(x), tanh(x)
acos(x), asin(x), atan(x)
acos(x), asin(x), atan(x)
exp(x),
exp(x), log(x), log10(x)
                log10(x)

Per un numero complesso z:
real(z)
real(z)      parte reale di z
imag(z)
imag(z)      parte immaginaria di z
conj(z)
conj(z)      complesso coniugato di z
Istruzione if… else… elseif

if   valuta un’espressione logica ed esegue una serie di
     istruzioni a seconda del valore dell’espressione logica

if   espressione logica 1
      istruzioni 1
elseif espressione logica 2
      istruzioni 2
else
                                     Operatori di relazione:
      istruzioni 3
                                     >     maggiore
end
                                     <     minore
                                     >=    maggiore o uguale
                                     >=    minore o uguale
                                     ==    uguale
                                     ~=    diverso
Esempio

Aprire un file nuovo e salvarlo con nome dispar.m
La function prende in input un numero e controlla se è pari o
dispari

function [] = dispar(x)
                                       N.B.: La funzione rem
                                       restituisce il resto di
if rem(x,2) == 0
                                       una divisione
    disp(‘Il numero è pari’)
else
    disp(‘Il numero è dispari’)
end
Esempio

Aprire un file nuovo e salvarlo con nome inversa.m
La function prende in input una matrice 2x2 e restituisce, quando
possibile, la sua matrice inversa

function B = inversa(A)

detA = A(1,1) * A(2,2) - A(1,2) * A(2,1);

if (detA == 0)
    disp(‘La matrice non è invertibile’)
    B = [];
else
    B = 1 / detA * [A(2,2),-A(1,2);A(1,1),-A(2,1)];
end
Ciclo for

for   esegue un numero di istruzioni per un numero fissato di
      volte

for   indice = inizio : incremento : fine
      istruzioni
end

Esempio: valor medio di un vettore
                                           N.B.: Il comando
x = [1 2 3 4 5 6 7];
                                           break forza l’uscita
somma = 0;
                                           dal ciclo
for i=1:length(x)
    somma = somma + x(i);
end
media = somma / length(x);
Ciclo while
while esegue un numero di istruzioni finché l’espressione di
      controllo rimane vera

while espressione di controllo
     istruzioni
end

Esempio: dividere un numero per 2 finché il risultato non sia
inferiore a 0.005 (contando il numero di divisioni effettuate)
a = 2390; % dividendo
count = 0;
                                            N.B.: Il comando
while (a/2 > 0.005)
                                            break forza l’uscita
    c = a/2;
                                            dal ciclo
    a = c;
    count = count + 1;
end
Istruzione switch
switch valuta un’espressione ed esegue un unico caso (casecase)
       possibile di istruzioni in base al valore di tale espressione

switch espressione_switch
    case espressione_case 1
         istruzioni 1
    case espressione case 2
         istruzioni 2
    …
    case espressione case n
         istruzioni n
    otherwise
         istruzioni n+1
end
Esempio
Creare una macro che chiede all’utente di inserire il grado di un
polinomio e far visualizzare il nome della curva corrispondente

grado = input(‘Inserire un numero naturale’);

switch grado
    case 0
         disp(‘Tipo di curva:        retta orizzontale’)
    case 1
         disp(‘Tipo di curva:        retta obliqua’)
    case 2
         disp(‘Tipo di curva:        parabola’)
    case 3
         disp(‘Tipo di curva:        cubica’)
    otherwise
         disp(‘Grado maggiore        di 3’)
end
Esercizio
Costruire una funzione fatt.m che restituisca il fattoriale di n.
Inserire controlli sul numero n in ingresso (se è negativo, non
intero,…)

function fn = fatt(n)
if (n < 0)
    disp(‘Errore: n negativo’)
elseif (floor(n)-n ~= 0)
    disp(‘Errore: n non intero’)
elseif (n == 0)
    fn = 1;
else
    fn = 1;
    for it = 1 : n
        fn = fn * it;
    end
end
Esercizio
Costruire una funzione hilbert.m che restituisca la matrice di
Hilbert di ordine n H(i,j) = 1 / (i+j-1) (i,j = 1,…,n).
Inserire controlli sul numero n in ingresso (n deve essere un
numero intero positivo)
function H = hilbert(n)
                                      Operatori logici:
if (floor(n)==n & n > 1)
                                      &     and
    for i = 1 : n
                                      |     or
        for j = 1 : n
                                      ~     not
            H(i,j) = 1/(i + j - 1);
        end
    end
else
    disp(‘Errore: n deve essere un numero…
         intero positivo’)
end
Operatori logici
Oltre agli operatori &, |, ~, in MATLAB sono presenti:

isempty       determina se un array è vuoto
isequal       determina se due array sono uguali
ismember      trova i membri di un insieme dentro un array

ischar        trova i caratteri dentro un array
isfloat       determina se un array è fatto di numeri reali
isinteger     determina se un array è fatto di numeri interi

find(expr)
find(expr)    valuta l’espressione ‘expr’ avente al proprio interno
              un array e ritorna le componenti dell’ array in cui
              expr è verificata
              Esempio: >> find([4 3 2 1] >= 2)
                             ans =
                                     123

Mais conteúdo relacionado

Mais procurados

Piping Installation and Erection Procedure.pdf
Piping Installation and Erection Procedure.pdfPiping Installation and Erection Procedure.pdf
Piping Installation and Erection Procedure.pdfMDAbdullah621330
 
Introduction to-pipe-stress-analysis-sam-kanappan
Introduction to-pipe-stress-analysis-sam-kanappanIntroduction to-pipe-stress-analysis-sam-kanappan
Introduction to-pipe-stress-analysis-sam-kanappanNovopan del Ecuador
 
Guidance on bolted_joints
Guidance on bolted_jointsGuidance on bolted_joints
Guidance on bolted_jointsPrince Nwabuko
 
Piping and Instrumentation / Process Flow Diagram
Piping and Instrumentation /  Process Flow DiagramPiping and Instrumentation /  Process Flow Diagram
Piping and Instrumentation / Process Flow DiagramPatel Ghanshyam
 
Pressure Vessel Design Manual-STRESS.pdf
Pressure Vessel Design Manual-STRESS.pdfPressure Vessel Design Manual-STRESS.pdf
Pressure Vessel Design Manual-STRESS.pdfniteshkumar293686
 
Asme section ii c new
Asme section ii c newAsme section ii c new
Asme section ii c newJithu John
 
Static and Fatigue Analysis of Pressure Vessel as per ASME Codes
Static and Fatigue Analysis of Pressure Vessel as per ASME CodesStatic and Fatigue Analysis of Pressure Vessel as per ASME Codes
Static and Fatigue Analysis of Pressure Vessel as per ASME CodesUtsav Patel
 
329497121-Onshore-Pipeline.ppt
329497121-Onshore-Pipeline.ppt329497121-Onshore-Pipeline.ppt
329497121-Onshore-Pipeline.pptMuhammed Sulfeek
 
ASME-V-2019.pdf
ASME-V-2019.pdfASME-V-2019.pdf
ASME-V-2019.pdfBCEDe1
 
welding procedure-P F number And WPS.ppt
welding procedure-P  F number And WPS.pptwelding procedure-P  F number And WPS.ppt
welding procedure-P F number And WPS.pptmrujjavalsinghvarana
 
Fonds bombés dimensions DVAI
Fonds bombés dimensions DVAIFonds bombés dimensions DVAI
Fonds bombés dimensions DVAIDVAI
 
5c handbook-welding
5c handbook-welding5c handbook-welding
5c handbook-weldingkomang gede
 
Api 650 en_espanol_pdf
Api 650 en_espanol_pdfApi 650 en_espanol_pdf
Api 650 en_espanol_pdfananpe
 
38785106 api-tank-design
38785106 api-tank-design38785106 api-tank-design
38785106 api-tank-design141jdf
 
ASME PVP 2016 PCC-1 Appendix A session summary
ASME PVP 2016   PCC-1 Appendix A session summaryASME PVP 2016   PCC-1 Appendix A session summary
ASME PVP 2016 PCC-1 Appendix A session summaryClay D. Rodery
 
A. l. Casillas - Maquinas - Calculo de Taller
A. l. Casillas - Maquinas - Calculo de TallerA. l. Casillas - Maquinas - Calculo de Taller
A. l. Casillas - Maquinas - Calculo de TallerAlejandro Javier
 
321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf
321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf
321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdfALBERTO VELOA ROA
 
Cmaa specification-70
Cmaa specification-70Cmaa specification-70
Cmaa specification-70tecnidibujos
 

Mais procurados (20)

Piping Installation and Erection Procedure.pdf
Piping Installation and Erection Procedure.pdfPiping Installation and Erection Procedure.pdf
Piping Installation and Erection Procedure.pdf
 
Tank design - word
Tank design - wordTank design - word
Tank design - word
 
Introduction to-pipe-stress-analysis-sam-kanappan
Introduction to-pipe-stress-analysis-sam-kanappanIntroduction to-pipe-stress-analysis-sam-kanappan
Introduction to-pipe-stress-analysis-sam-kanappan
 
Guidance on bolted_joints
Guidance on bolted_jointsGuidance on bolted_joints
Guidance on bolted_joints
 
Piping and Instrumentation / Process Flow Diagram
Piping and Instrumentation /  Process Flow DiagramPiping and Instrumentation /  Process Flow Diagram
Piping and Instrumentation / Process Flow Diagram
 
Pressure Vessel Design Manual-STRESS.pdf
Pressure Vessel Design Manual-STRESS.pdfPressure Vessel Design Manual-STRESS.pdf
Pressure Vessel Design Manual-STRESS.pdf
 
Asme section ii c new
Asme section ii c newAsme section ii c new
Asme section ii c new
 
Static and Fatigue Analysis of Pressure Vessel as per ASME Codes
Static and Fatigue Analysis of Pressure Vessel as per ASME CodesStatic and Fatigue Analysis of Pressure Vessel as per ASME Codes
Static and Fatigue Analysis of Pressure Vessel as per ASME Codes
 
329497121-Onshore-Pipeline.ppt
329497121-Onshore-Pipeline.ppt329497121-Onshore-Pipeline.ppt
329497121-Onshore-Pipeline.ppt
 
ASME-V-2019.pdf
ASME-V-2019.pdfASME-V-2019.pdf
ASME-V-2019.pdf
 
welding procedure-P F number And WPS.ppt
welding procedure-P  F number And WPS.pptwelding procedure-P  F number And WPS.ppt
welding procedure-P F number And WPS.ppt
 
Fonds bombés dimensions DVAI
Fonds bombés dimensions DVAIFonds bombés dimensions DVAI
Fonds bombés dimensions DVAI
 
5c handbook-welding
5c handbook-welding5c handbook-welding
5c handbook-welding
 
Norma cmaa 70
Norma cmaa 70Norma cmaa 70
Norma cmaa 70
 
Api 650 en_espanol_pdf
Api 650 en_espanol_pdfApi 650 en_espanol_pdf
Api 650 en_espanol_pdf
 
38785106 api-tank-design
38785106 api-tank-design38785106 api-tank-design
38785106 api-tank-design
 
ASME PVP 2016 PCC-1 Appendix A session summary
ASME PVP 2016   PCC-1 Appendix A session summaryASME PVP 2016   PCC-1 Appendix A session summary
ASME PVP 2016 PCC-1 Appendix A session summary
 
A. l. Casillas - Maquinas - Calculo de Taller
A. l. Casillas - Maquinas - Calculo de TallerA. l. Casillas - Maquinas - Calculo de Taller
A. l. Casillas - Maquinas - Calculo de Taller
 
321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf
321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf
321985102 manual-de-fabricacion-y-montaje-de-tanques-i-pdf
 
Cmaa specification-70
Cmaa specification-70Cmaa specification-70
Cmaa specification-70
 

Destaque

Destaque (6)

Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02Cn01 matlabmat-inf-090304063949-phpapp02
Cn01 matlabmat-inf-090304063949-phpapp02
 
David hilbert presentation
David hilbert presentationDavid hilbert presentation
David hilbert presentation
 
David hilbert annete
David hilbert  anneteDavid hilbert  annete
David hilbert annete
 
Hilbert
HilbertHilbert
Hilbert
 
David Hilbert
David HilbertDavid Hilbert
David Hilbert
 
Aportaciones a la matematica
Aportaciones a la matematicaAportaciones a la matematica
Aportaciones a la matematica
 

Semelhante a Matlab: Introduzione e comandi base

Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a MatlabMarco Suma
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)STELITANO
 
Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016Michele Scipioni
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiAngela Cristina
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)STELITANO
 
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdfPasqualeRuocco5
 
Fondamenti di algebra lineare, parte 1: vettori e matrici
Fondamenti di algebra lineare, parte 1: vettori e matriciFondamenti di algebra lineare, parte 1: vettori e matrici
Fondamenti di algebra lineare, parte 1: vettori e matriciNicola Iantomasi
 
La macchina più geek dell’universo The Turing Machine
La macchina più geek dell’universo The Turing MachineLa macchina più geek dell’universo The Turing Machine
La macchina più geek dell’universo The Turing MachinePierpaolo Basile
 
La macchina più geek dell'universo: The Turing Machine | Laboratorio B-Geek
La macchina più geek dell'universo: The Turing Machine | Laboratorio B-GeekLa macchina più geek dell'universo: The Turing Machine | Laboratorio B-Geek
La macchina più geek dell'universo: The Turing Machine | Laboratorio B-GeekAlumni Mathematica
 
Matematica di base e avanzata con Sage
Matematica di base e avanzata con SageMatematica di base e avanzata con Sage
Matematica di base e avanzata con SageAndrea Lazzarotto
 
Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)STELITANO
 
La Matematica e la fisica da Pong ai giochi tripla A
La Matematica e la fisica da Pong ai giochi tripla ALa Matematica e la fisica da Pong ai giochi tripla A
La Matematica e la fisica da Pong ai giochi tripla APier Luca Lanzi
 
Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...
Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...
Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...DamianoRavalico
 
Qt Concurrent
Qt ConcurrentQt Concurrent
Qt ConcurrentQT-day
 

Semelhante a Matlab: Introduzione e comandi base (20)

Tutorial Matlab 2009
Tutorial Matlab 2009Tutorial Matlab 2009
Tutorial Matlab 2009
 
Introduzione a Matlab
Introduzione a MatlabIntroduzione a Matlab
Introduzione a Matlab
 
Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)Lezione 23 (9 maggio 2012)
Lezione 23 (9 maggio 2012)
 
R Graphics
R GraphicsR Graphics
R Graphics
 
Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016Kinetic_Modeling_02_12_2016
Kinetic_Modeling_02_12_2016
 
Ecdl modulo 1 -Fondamenti
Ecdl modulo 1 -FondamentiEcdl modulo 1 -Fondamenti
Ecdl modulo 1 -Fondamenti
 
Riepilogo Java C/C++
Riepilogo Java C/C++Riepilogo Java C/C++
Riepilogo Java C/C++
 
Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)Esercitazione 3 (14 marzo 2012)
Esercitazione 3 (14 marzo 2012)
 
08 mapreduce
08   mapreduce08   mapreduce
08 mapreduce
 
Algorithmist guide II
Algorithmist guide IIAlgorithmist guide II
Algorithmist guide II
 
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
7. MATLAB - Parte 2 (IO, cicli, funzioni).pdf
 
Fondamenti di algebra lineare, parte 1: vettori e matrici
Fondamenti di algebra lineare, parte 1: vettori e matriciFondamenti di algebra lineare, parte 1: vettori e matrici
Fondamenti di algebra lineare, parte 1: vettori e matrici
 
La macchina più geek dell’universo The Turing Machine
La macchina più geek dell’universo The Turing MachineLa macchina più geek dell’universo The Turing Machine
La macchina più geek dell’universo The Turing Machine
 
La macchina più geek dell'universo: The Turing Machine | Laboratorio B-Geek
La macchina più geek dell'universo: The Turing Machine | Laboratorio B-GeekLa macchina più geek dell'universo: The Turing Machine | Laboratorio B-Geek
La macchina più geek dell'universo: The Turing Machine | Laboratorio B-Geek
 
Matematica di base e avanzata con Sage
Matematica di base e avanzata con SageMatematica di base e avanzata con Sage
Matematica di base e avanzata con Sage
 
Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)Lezione 8 (12 marzo 2012)
Lezione 8 (12 marzo 2012)
 
La Matematica e la fisica da Pong ai giochi tripla A
La Matematica e la fisica da Pong ai giochi tripla ALa Matematica e la fisica da Pong ai giochi tripla A
La Matematica e la fisica da Pong ai giochi tripla A
 
Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...
Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...
Progettazione e Sviluppo di un Sistema per Migliorare il Codice Generato da u...
 
Qt Concurrent
Qt ConcurrentQt Concurrent
Qt Concurrent
 
Objective Caml Sudoku
Objective Caml SudokuObjective Caml Sudoku
Objective Caml Sudoku
 

Mais de Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA CloudMajong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processesMajong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product lineMajong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformationMajong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven ArchitectureMajong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture PortfolioMajong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural stylesMajong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architectureMajong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a productMajong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural stylesMajong DevJfu
 

Mais de Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Último

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 

Último (9)

Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 

Matlab: Introduzione e comandi base

  • 1. Introduzione a MATLAB Luca Zanni, Marco Prato Calcolo Numerico Corsi di Laurea in Matematica e Informatica
  • 2. MATrix LABoratory MATLAB è nato principalmente come programma destinato alla gestione di matrici. E’ un interprete di comandi in cui l’unità base dei dati è un vettore o una matrice I comandi possono essere forniti interattivamente o contenuti in files su disco (m-files) Comprende un vasto set di funzioni predefinite e numerose librerie (toolbox) per svariate applicazioni che possono essere ampliate Ha una buona potenzialità grafica Esistono versioni di MATLAB per Unix/Linux, Windows e MAC. I files creati sono portabili da una piattaforma all’altra
  • 3. Potenzialità di MATLAB Calcolatrice digitare 3 + 2 premere invio risposta immediata!
  • 4. Potenzialità di MATLAB Calcolo matriciale >> A = magic(3) >> B = [4 5 0; 3 8 3; 4 9 1] >> A*B ans = 59 102 9 55 118 22 51 110 29
  • 5. Potenzialità di MATLAB Soluzione di equazioni >> s = solve(‘cos(2*x)+sin(x)=1’) s= 0 pi 1/6*pi 5/6*pi
  • 6. Potenzialità di MATLAB Derivate di funzioni >> syms x % calcolo simbolico >> f= 2*(sin(x+3)/(x+3))*(4*x^2); >> diff(f) ans = 8*cos(x+3)/(x+3)*x^2-8*sin(x+3)/(x+3)^2*x^2+16*sin(x+3)/(x+3)*x >> pretty(ans) 2 2 cos(x + 3) x sin(x + 3) x sin(x + 3) x 8 ------------- - 8 ------------- + 16 ------------ x+3 2 x+3 (x + 3)
  • 7. Potenzialità di MATLAB Grafici 2D di funzioni >> fplot(inline('2*(sin(x+3)/(x+3))*(4*x^2)'),[-10 10])
  • 8. Potenzialità di MATLAB Grafici 3D di funzioni >> t = 0:pi/50:10*pi >> plot3(sin(t),cos(t),t) >> grid on >> axis square 35 30 25 20 15 10 5 0 1 0.5 1 0.5 0 0 -0.5 -0.5 -1 -1
  • 9. Potenzialità di MATLAB Grafici 3D di funzioni >> [X,Y,Z]= peaks(30) >> surfc(X,Y,Z) >> colormap hsv >> axis([-3 3 -3 3 -10 5]) >> grid on
  • 10. Potenzialità di MATLAB Altri esempi di grafici 3D
  • 11. Potenzialità di MATLAB Altri esempi di grafici 3D 22% >> x = [1 3 0.5 2.5 2] 11% >> explode = [0 1 0 0 0] 28% >> pie3(x,explode) >> colormap hsv 33% 6% 90 6 120 60 4 150 30 2 >> theta = 2*pi*rand(1,50); 180 0 >> rose(theta) 210 330 240 300 270
  • 12. Potenzialità di MATLAB Altri esempi di grafici 3D >> Y = cool(7); >> bar3(Y,'detached') >> title('Detached')
  • 13. Potenzialità di MATLAB Altri esempi di grafici 3D
  • 14. Avvio del programma Avvio di MATLAB (Windows) Start Programmi Matlab (o icona sul desktop) Avvio di MATLAB (Linux) Terminale INVIO matlab
  • 15. Schermata MATLAB Command Window Workspace Command History
  • 16. La linea di comando La linea di comando è indicata da un prompt come in DOS: >> Accetta dichiarazioni di variabili, espressioni e chiamate a tutte le funzioni disponibili nel programma. Tutte le funzioni di MATLAB non sono altro che file di testo, simili a quelli che l’utente può generare con un text editor, e vengono eseguite semplicemente digitandone il nome sulla linea di comando MATLAB permette inoltre di richiamare le ultime righe di comandi inseriti usando le frecce in alto e in basso Help in linea Esempio: >> help cos
  • 17. Comandi di uso generale who: elenco delle variabili definite in memoria whos: informazioni su tutte le variabili in memoria clear: cancella tutte le variabili in memoria o una in particolare se specificata (clear nome_variabile) save: salva tutte le variabili in memoria sul file specificato, in vari formati load: richiama in memoria le variabili salvate sul file specificato what: elenco di tutte le funzioni MATLAB nell’area di lavoro (estensione .m) e dei file di dati che sono stati salvati (estensione .mat)
  • 18. Assegnazione di variabili costanti >> a = 1.54 “a” è il nome della costante, 1.54 il valore >> a = 1.54; “;” non visualizza la risposta sullo schermo >> 5 ans = 5 “ans” è il nome della variabile di default Di default MATLAB lavora in doppia precisione. Ogni numero memorizzato in doppia precisione occupa 8 bytes
  • 19. Operazioni aritmetiche + addizione - sottrazione / divisione * moltiplicazione ^ potenza 3 3+5 − 2/3 x= 4 4(5 + 2 ) ATTENZIONE: l’intero calcolo va scritto in riga. E’ necessario un uso adeguato delle parentesi () per le precedenze aritmetiche >> x = (3 + 5^3 – 2/3)/(4*(5 + 2^4)) x = 1.5159
  • 20. Operazioni aritmetiche Visualizzazione dei numeri sul display: >> format type valori di type risultato pi short 5-digit scaled fixed point 3.1416 short e 5-digit floating point 3.1416e+000 short g Best of 5-digit fixed or floating point 3.1416 3.141592653 long 15-digit scaled fixed point 58979 3.141592653 long e 15-digit floating point 589793e+000 3.141592653 long g Best of 15-digit fixed or floating point 58979
  • 21. Variabili predefinite pi π i,j unità immaginaria Inf Infinito (1/0) NaN Not a Number (0/0) eps 2.2204e-16 precisione di macchina
  • 22. Assegnazione di matrici e array Modi equivalenti di generare un vettore riga: >> v = [1 5 8 12] >> v = [1,5,8,12] Modi equivalenti di generare un vettore colonna: >> v = [1;5;8;12] >> v = [1 5 8 12]’ Generazione di una matrice di dimensione 2 x 3: >> m = [1 6 2; 3 9 1] m= 1 6 2 3 9 1
  • 23. Gli intervalli MATLAB permette di definire intervalli numerici in modo semplice ed automatico. Esistono per tale scopo specifici operatori e funzioni L’operatore “:” consente la generazione di intervalli equispaziati Sintassi valore iniziale : incremento : valore finale N.B.: l’incremento di default è pari a 1 x = 1:5 => x = [1 2 3 4 5] x = 0:2:10 => x = [0 2 4 6 8 10] x = 0:3:10 => x = [0 3 6 9] x = 0:1.5:9 => x = [0 1.5 3.0 4.5 6.0 7.5 9.0] x = 0:-1:-5 => x = [0 –1 –2 –3 –4 -5]
  • 24. Gli intervalli MATLAB permette di definire intervalli numerici in modo semplice ed automatico. Esistono per tale scopo specifici operatori e funzioni L’operatore “linspace” crea un intervallo numerico prefissando il numero di punti piuttosto che l’incremento Sintassi linspace(valore iniziale, valore finale, numero punti) N.B.: il numero di punti di default è 100 >> s = linspace(1,10,6) s= 1.0000 2.8000 4.6000 6.4000 8.2000 10.0000
  • 25. Operazioni sulle matrici Accedere agli elementi di un vettore: v(i) Accedere agli elementi di una matrice: m(i,j) Estrarre una riga della matrice: row = m(i,:) Estrarre una colonna da una matrice: col = m(:,j) Modificare elementi: m(i,j) = #
  • 26. Estrazione di sottomatrici  1 2 3 A=  4 0 6    Estrarre la colonna 2 Estrarre una matrice 2 x 2 v = A(:,2) M = A(:,2:3)  2  2 3 v=  M =  0 6 0    
  • 27. Matrici a blocchi 1 2 A= 3 4    Costruire una matrice 2 x 4 da A B = [A,A] 1 2 1 2 B= 3 4 3 4    Costruire una matrice 4 x 2 da A C = [A;A] 1 2   3 4 C = 2 1   3 4  
  • 28. Funzioni utili lavorando con le matrici eye(n) eye(n) matrice identica n x n zeros(m,n) zeros(m,n) matrice m x n con tutti elementi uguali a 0 ones (m,n) matrice m x n con tutti elementi uguali a 1 size(x) size(x) restituisce le dimensioni dell’array x length(v) length(v) restituisce il numero di componenti del vettore v
  • 29. Funzioni utili lavorando con le matrici diag(M) diag(M) restituisce un vettore contenente la diagonale della matrice M diag(v) diag(v) restituisce una matrice quadrata con il vettore v sulla diagonale e zero altrove tril(M,i) tril(M,i) estrae dalla matrice M tutti gli elementi sulla e sotto la i-esima diagonale Di default si ha i = 0 (diagonale principale) triu(M,i) triu(M,i) estrae dalla matrice M tutti gli elementi sulla e sopra la i-esima diagonale Di default si ha i = 0 (diagonale principale)
  • 30. Esercizio Creare una matrice in cui la prima riga sia composta dai numeri da 1 a 10, la seconda riga composta dai numeri da 11 a 20 e la e la terza dai numeri da 21 a 30. Modificare la seconda riga in modo da annullarne gli elementi. >> m = [1:10;11:20;21:30] m= 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 >> m(2,:) = 0 m= 1 2 3 4 5 6 7 8 9 10 0 0 0 0 0 0 0 0 0 0 21 22 23 24 25 26 27 28 29 30
  • 31. Operazioni tra matrici 1 2  1 0 0 3 1 A= 3 4 B=  −1 1  C = 1 2 4          2 2   2 5 A+B   0 2 Somma / differenza A–B   4 3   A+C ??? Error using = => + Matrix dimensions must agree.
  • 32. Operazioni tra matrici 1 2  1 0 A= 3 4 B=  −1 1         −1 2    −1 4  matriciale A*B    Prodotto  1 0   − 3 4 elemento per elemento A .* B   
  • 33. Determinante / rango / inversa  3 4 − 1    1 0 B=  −1 1  D = 5 2 3      0 1 − 1   det(B) 1 Determinante anche B^(-1) det(D) 0 Rango rank(D) 2 1 0   1 1  inv(B)    Inversa inv(D) ?
  • 34. Stringhe In MATLAB una stringa è un vettore di caratteri: >> s = ‘oste’; >> s(1) ans = o >> s(1) = ‘a’ s= aste >> s = [‘c’,s] s= caste
  • 35. Operazioni sulle stringhe str2num str2 trasforma un array di caratteri numerici in un array di numeri (in formato double) num2 num2str trasforma un array di numeri in un array di caratteri numerici str2mat str2 trasforma una sequenza di stringhe in una matrice (ogni stringa della sequenza è una riga della matrice) mat2 mat2str converte una matrice numerica in una stringa contenente la sintassi MATLAB per la creazione di tale matrice disp(‘text’) disp visualizza su schermo la stringa ‘text’
  • 36. La programmazione In MATLAB si possono realizzare degli m-file, ovvero file di testo contenenti sequenze di comando e strutture di controllo che vengono interpretate I file prodotti mediante un editor di testo devono essere salvati in un file con estensione .m, in una directory contenuta nel path file .m macro function
  • 37. Le macro Gli m-file di tipo macro operano sulle variabili contenute in memoria, e non esistono variabili locali Contengono una serie di comandi che vengono automaticamente eseguiti quando si esegue la macro Per eseguire un m-file basta digitarne il nome (senza l’estensione) dalla riga di comando Per creare una macro: 1. aprire un file nuovo ( File New ) 2. scrivere il codice della macro 3. salvare il file filename.m 4. eseguire da linea di comando >> filename + INVIO
  • 38. Esempio % ESEMPIO DI MACRO: calcola la matrice trasposta % di una matrice A (presente in memoria) e ne % visualizza l’output a schermo Atrasp = A’; disp(‘La trasposta della matrice A è’) Atrasp
  • 39. Le function MATLAB permette di definire file di tipo funzioni. Tali funzioni vanno scritte in modo identico agli m-file, tranne per l’intestazione che è del tipo function [variabili di uscita] = nomefunzione(variabili di ingresso) N.B.: le funzioni vanno salvato in un file avente lo stesso nome della funzione stessa. Tutte le variabili sono locali alla funzione, per cui dopo la sua esecuzione non restano in memoria La function viene chiamata da linea di comando con nomefunzione(valore_variabile_ingresso)
  • 40. Esempio % ESEMPIO DI FUNCTION: trasformare la macro % precedente in una funzione function [Atrasp] = trasposta(A) Atrasp = A’; >> mat_trasp = trasposta(A) dalla linea di comando
  • 41. Funzioni matematiche intrinseche sqrt(x) sqrt(x) radice quadrata di x round(x) arrotondamento di x all’intero più vicino fix(x) fix(x) parte intera di x floor(x) floor(x) intero ‘sinistro’ più vicino a x ceil(x) ceil(x) intero ‘destro’ più vicino a x cos(x), sin(x), tan(x) tan(x) cosh(x), sinh(x), tanh(x) cosh(x), sinh(x), tanh(x) acos(x), asin(x), atan(x) acos(x), asin(x), atan(x) exp(x), exp(x), log(x), log10(x) log10(x) Per un numero complesso z: real(z) real(z) parte reale di z imag(z) imag(z) parte immaginaria di z conj(z) conj(z) complesso coniugato di z
  • 42. Istruzione if… else… elseif if valuta un’espressione logica ed esegue una serie di istruzioni a seconda del valore dell’espressione logica if espressione logica 1 istruzioni 1 elseif espressione logica 2 istruzioni 2 else Operatori di relazione: istruzioni 3 > maggiore end < minore >= maggiore o uguale >= minore o uguale == uguale ~= diverso
  • 43. Esempio Aprire un file nuovo e salvarlo con nome dispar.m La function prende in input un numero e controlla se è pari o dispari function [] = dispar(x) N.B.: La funzione rem restituisce il resto di if rem(x,2) == 0 una divisione disp(‘Il numero è pari’) else disp(‘Il numero è dispari’) end
  • 44. Esempio Aprire un file nuovo e salvarlo con nome inversa.m La function prende in input una matrice 2x2 e restituisce, quando possibile, la sua matrice inversa function B = inversa(A) detA = A(1,1) * A(2,2) - A(1,2) * A(2,1); if (detA == 0) disp(‘La matrice non è invertibile’) B = []; else B = 1 / detA * [A(2,2),-A(1,2);A(1,1),-A(2,1)]; end
  • 45. Ciclo for for esegue un numero di istruzioni per un numero fissato di volte for indice = inizio : incremento : fine istruzioni end Esempio: valor medio di un vettore N.B.: Il comando x = [1 2 3 4 5 6 7]; break forza l’uscita somma = 0; dal ciclo for i=1:length(x) somma = somma + x(i); end media = somma / length(x);
  • 46. Ciclo while while esegue un numero di istruzioni finché l’espressione di controllo rimane vera while espressione di controllo istruzioni end Esempio: dividere un numero per 2 finché il risultato non sia inferiore a 0.005 (contando il numero di divisioni effettuate) a = 2390; % dividendo count = 0; N.B.: Il comando while (a/2 > 0.005) break forza l’uscita c = a/2; dal ciclo a = c; count = count + 1; end
  • 47. Istruzione switch switch valuta un’espressione ed esegue un unico caso (casecase) possibile di istruzioni in base al valore di tale espressione switch espressione_switch case espressione_case 1 istruzioni 1 case espressione case 2 istruzioni 2 … case espressione case n istruzioni n otherwise istruzioni n+1 end
  • 48. Esempio Creare una macro che chiede all’utente di inserire il grado di un polinomio e far visualizzare il nome della curva corrispondente grado = input(‘Inserire un numero naturale’); switch grado case 0 disp(‘Tipo di curva: retta orizzontale’) case 1 disp(‘Tipo di curva: retta obliqua’) case 2 disp(‘Tipo di curva: parabola’) case 3 disp(‘Tipo di curva: cubica’) otherwise disp(‘Grado maggiore di 3’) end
  • 49. Esercizio Costruire una funzione fatt.m che restituisca il fattoriale di n. Inserire controlli sul numero n in ingresso (se è negativo, non intero,…) function fn = fatt(n) if (n < 0) disp(‘Errore: n negativo’) elseif (floor(n)-n ~= 0) disp(‘Errore: n non intero’) elseif (n == 0) fn = 1; else fn = 1; for it = 1 : n fn = fn * it; end end
  • 50. Esercizio Costruire una funzione hilbert.m che restituisca la matrice di Hilbert di ordine n H(i,j) = 1 / (i+j-1) (i,j = 1,…,n). Inserire controlli sul numero n in ingresso (n deve essere un numero intero positivo) function H = hilbert(n) Operatori logici: if (floor(n)==n & n > 1) & and for i = 1 : n | or for j = 1 : n ~ not H(i,j) = 1/(i + j - 1); end end else disp(‘Errore: n deve essere un numero… intero positivo’) end
  • 51. Operatori logici Oltre agli operatori &, |, ~, in MATLAB sono presenti: isempty determina se un array è vuoto isequal determina se due array sono uguali ismember trova i membri di un insieme dentro un array ischar trova i caratteri dentro un array isfloat determina se un array è fatto di numeri reali isinteger determina se un array è fatto di numeri interi find(expr) find(expr) valuta l’espressione ‘expr’ avente al proprio interno un array e ritorna le componenti dell’ array in cui expr è verificata Esempio: >> find([4 3 2 1] >= 2) ans = 123