Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente...

Post on 02-May-2015

215 views 0 download

Transcript of Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente...

Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e

dell'Ambiente2010-2011

Corso IFTS 2010-2011 1Ilaria Pietroni

Corso IFTS 2010-2011 2Ilaria Pietroni

Operatori relazionali

Operatori logici

Polinomi

Iteratori

Gestione files

Interpolazione

Corso IFTS 2010-2011 Ilaria Pietroni

Ogni operatore restituisce

0 se la relazione è falsa

1 se è verificata

3

Corso IFTS 2010-2011 Ilaria Pietroni 4

A=[1 3; 4 6];B=[3 7; 4 6];

disp('A==B')A==B

disp('A~=B')A~=B

disp('A>=B')A>=B

disp('A>B')A>B

Corso IFTS 2010-2011 Ilaria Pietroni 5

A=[1 3; 4 6];B=[3 7; 4 6];

disp('A<=B')A<=B

disp('A<B')A<B

Corso IFTS 2010-2011 6Ilaria Pietroni

Operatori relazionali

Operatori logici

Polinomi

Iteratori

Gestione files

Interpolazione

Corso IFTS 2010-2011 Ilaria Pietroni

Ogni operatore restituisce

0 se la relazione è falsa

1 se è verificata

Operatori Logici

7

Corso IFTS 2010-2011 Ilaria Pietroni 8

A=[1 3; 4 6];B=[3 7; 4 6];

disp('& - and')disp('A(1,1)>0 & A(2,1)<2')A(1,1)>0 & A(2,1)<2

disp('| - or')disp('A(1,1)>0 | A(2,1)<2')A(1,1)>0 | A(2,1)<2

disp('~ - not')disp('~(A(1,1)>0 & A(2,1)<2)')~(A(1,1)>0 & A(2,1)<2)

disp('~(A(1,1)>0 | A(2,1)<2)')~(A(1,1)>0 | A(2,1)<2)

Corso IFTS 2010-2011 9Ilaria Pietroni

Operatori relazionali

Operatori logici

Polinomi

Iteratori

Gestione files

Interpolazione

Istruzione IF-THEN-ELSE La forma generale del costrutto IF è la seguente

if espressione logica 1 (condizione)operazioni1;

elseif espressione logica 2 (condizione)operazioni2;

elseoperazioni3;

endOperazioni1,2,3 sono le operazioni da compiere se la condizione corrispondente risulta vera.

Corso IFTS 2010-2011 10Ilaria Pietroni

Corso IFTS 2010-2011 Ilaria Pietroni

Prova_if

if nargin<1 mat=[1 6 8;2 0 9;5 1 9;6 7 8]end

b=input ('valore di b ');

if mat(1,3)==b mat(1,3)=0;elseif mat(1,3)>b mat(:,3)=[]; else %mat(1,3)<b mat(1,:)=mat(3,:);end mat

11

Corso IFTS 2010-2011 Ilaria Pietroni 12

Modificare la function che calcola la temperatura potenziale aggiungendo la possibilità di settare in input la p a livello zero.

Istruzioni per cicliI cicli si utilizzano per ripetere un blocco un certo

numero di volte

Si possono fare con due diversi costrutti:

For se il numero di volte è ben determinato

While se il numero di volte non è determinato in anticipo, ma determinato da una condizione logica

Corso IFTS 2010-2011 13Ilaria Pietroni

for k = a:step:n,operazioni,

end;

Il ciclo esegue le operazioni (separate da virgole) incrementando la variabile k da a a n, con a<n, con il passo indicato in step. Se step si omette vale 1.

E’ possibile andare con passo negativo in tal caso a>n

FOR

Corso IFTS 2010-2011 14Ilaria Pietroni

Corso IFTS 2010-2011 Ilaria Pietroni

Prova_for

Kc=[];Kr=[];for k=a:n:b % se è uno scalare viene eseguito una sola volta% vettore riga incrementa di uno% matrice passa alla colonna successivaKc=[Kc;k];Kr=[Kr k];endk % ultimo valore utilizzatoKcKr% più semplicemente:Kcs=[a:n:b]'Krs=[a:n:b]

15

while condizione,operazioni;end;

Il ciclo esegue le operazioni fino a che la condizione è verificata. La condizione viene costruita con le stesse regole (vincoli ed operatori) di quella dell'IF.

Attenzione: prevedere una inizializzazione prima del ciclo che verifichi la condizione per far sì che il programma entri nel ciclo, ed inoltre inserire nelle operazioni qualcosa che possa interagire e quindi modificare la condizione, altrimenti il ciclo sarà ripetuto all'infinito.

WHILE

Corso IFTS 2010-2011 16Ilaria Pietroni

Corso IFTS 2010-2011 Ilaria Pietroni

Prova_while

s=[1:20];t=3;while s(t)<10s(t)=1;t=t+1;ends

17

Corso IFTS 2010-2011 Ilaria Pietroni 18

Utilizzato per interrompere un ciclo prima del previsto

A=[1 2 3; 14 5 6; 17 8 9];B=[1 2 3; 4 5 6; 7 8 9];for i=1:3A(i,1)=5;if det(A)==9Belsebreak %esce dal ciclo forBendendA

Corso IFTS 2010-2011 Ilaria Pietroni

RETURNUtilizzato per tornare alla funzione precedente o alla keybord

A=[1 2 3; 14 5 6; 17 8 9];B=[1 2 3; 4 5 6; 7 8 9];%b= det(A);b= det(B)if b<2b=2 returnelsec=b+5end

19

Corso IFTS 2010-2011 Ilaria Pietroni

CONTINUEUtilizzato per cambiare l’ordine di esecuzione in un ciclo

20

Corso IFTS 2010-2011 Ilaria Pietroni 21

Scrivere una function che data una serie temporale calcoli per ogni ora:

1) La media2) La deviazione standard

- ) clocktotime- ) trovare intervalli di un’ora- ) per ogni intervallo calcolare i parametri

AWSdata.m

Corso IFTS 2010-2011 Ilaria Pietroni

FINDs=[1:50];

L=find(s>40)

L(1)

L(end)s(L(5))=NaN;s(L)S=[50:-1:1]l=find(S>40)l(1)l(end)S(l)

22

Corso IFTS 2010-2011 Ilaria Pietroni 23

Data una matrice 10x5 cercare tutti i valori della seconda colonna maggiori di un numero a, e cambi il valore della quarta colonna corrispondente con nan; della prima con 0 quindi mostri l’intera riga.

Corso IFTS 2010-2011 Ilaria Pietroni

IS*A=[];isempty(A)p=[1,2,nan,5,7,4];p(isnan(p))=[]a=struct('giorni',[1:31],'ore',[1:24]);if isstruct(a)e=[0:23]elsea=[0:23]endif ~isfield(a,'minuti') a.minuti=[0:60]endif ismatrix(a)t=pelset=nanend

24

Corso IFTS 2010-2011 Ilaria Pietroni

IS*

k='s0'if isnumeric(k)disp('E'' un numero')else disp('Non è un mumero')endif isstr(k)disp('E'' una stringa')else disp('Non è una stringa')End

25

Corso IFTS 2010-2011 Ilaria Pietroni

IS*

p=[1,2,nan,5,7,4]o=[1,2,nan,5,7,4]if issame(p,o)disp('Sono gli stessi')elsedisp('Non sono gli stessi') endif isa(a,'struct')b=[1,5;9,6]elsea=[1,5;9,6]end

26

Corso IFTS 2010-2011 Ilaria Pietroni 27

Data la matrice finale dell’es 3 cercare tutti i nan.

Corso IFTS 2010-2011 28Ilaria Pietroni

Operatori relazionali

Operatori logici

Polinomi

Iteratori

Gestione files

Interpolazione

Corso IFTS 2010-2011 Ilaria Pietroni 29

mat=[1 6; 0 9; 1 9; 7 8]F= fopen('mat.txt','w');fprintf(F,'%2.0f %2.0f\n',mat(:,1),mat(:,2));fclose(F)F2= fopen('mat2.txt','w');fprintf(F2,'%2.0f %2.0f\n',mat);fclose(F2)pauseA= fopen('mat.txt','r');sec_mat=fscanf(A,'%f %f');fclose(A)sec_mat

OPEN

Corso IFTS 2010-2011 Ilaria Pietroni 30

sec_matsec_matINV=sec_mat‘

B= fopen('mat.txt','r');sec_mat2=fscanf(B,'%f ');fclose(B)sec_mat2sec_mat2INV=sec_mat2'

OPEN

Corso IFTS 2010-2011 Ilaria Pietroni 31

B= fopen('mat.txt','r');sec_mat2=fscanf(B,'%f ');fclose(B)sec_mat2sec_mat2INV=sec_mat2'

OPEN

Corso IFTS 2010-2011 Ilaria Pietroni 32

Specificazione descrizione

%c Carattere singolo

%d Notazione decimale (con segno)

%f Notazione con punto

%s stringa

%u Notazione decimale (senza segno)

%e Notazione esponenziale (con e)

%E Notazione esponenziale (con E)

Corso IFTS 2010-2011 Ilaria Pietroni 33

t=input('valore della costante stringa ', 's')t+100l=str2num(t)l+100

INPUT

Corso IFTS 2010-2011 Ilaria Pietroni 34

y=input('valore della costante numerica ')y+100m=num2str(y)m+100

INPUT

Corso IFTS 2010-2011 Ilaria Pietroni 35

load('NM.dat')LOAD

Corso IFTS 2010-2011 Ilaria Pietroni 36

DIARY

A=[ 1 3 5; 2 4 6; 7 8 9; 4 5 6; 9 5 4]S=[1 2 3; 4 5 6; 7 8 9; 1 3 5; 2 4 6]diary('prova_diary');diary onS.*4B=A-SC=[]diary off

Corso IFTS 2010-2011 Ilaria Pietroni37

a=struct('giorni',[1:31],'ore',[1:24],…'minuti',[0:60])mat=[a.giorni,a.ore,a.minuti]save ('a')save('NM.dat','a')

H= fopen('mat.txt','w');fprintf(H,'Dat\n\n');fprintf(H,'giorni ore minuti\n');fprintf(H,'%u %u',mat,[1:24]);fclose(H)

SAVE

Corso IFTS 2010-2011 Ilaria Pietroni 38

PRINT

% % per salvare le figure:figureplot(a.giorni)print('giorni.jpg')% Supported Formats: bmp jpeg jpg png ppm tif tiff xbm xpm

Corso IFTS 2010-2011 Ilaria Pietroni 39

a) Leggere il fileb) Selezionare solo le colonne 1,3,5c) Calcolare la temperatura potenziale (utilizzando la

fne fatta durante la lezione precedente)d) Aggiungere la nuova colonna alla matrice

precedente e) Salvare un nuovo file sia in formato .txt che .dat

Corso IFTS 2010-2011 40Ilaria Pietroni

Operatori relazionali

Operatori logici

Polinomi

Iteratori

Gestione files

Interpolazione

Corso IFTS 2010-2011 Ilaria Pietroni

Un polinomio è una espressione con costanti e variabili combinate usando soltanto addizione, sottrazione e moltiplicazione. Il grado di un polinomio è dato dalla massima potenza delle variabili.

p(x)=p1xn+ p2xn-1 +…+pnx1 +pn+1x0

Una radice di un polinomio p(x) in una sola variabile è un numero b tale che

p(b)=0

cioè tale che, sostituito a x, rende nulla l'espressione. Quindi se

p(x)=p1xn+ p2xn-1 +…+pnx1 +pn+1x0

il numero b è radice se

p(b)=p1bn+ p2bn-1 +…+pnb1 +pn+1b0

POLINOMIO

41

• La funzione roots calcola le radici del polinomio.Es.:

p = [1 3 5 2];r = roots(p);

In r sono memorizzate le radici del polinomio p.

• La funzione inversa è la funzione poly:pp = poly(r);

In pp viene ripristinato il polinomio originale p.

• La funzione polyval calcola i valori del polinomio per i valori dati in input.

a=polyval(p,[2 5]);

calcola il polinomio p nei punti 2 e 5

In MatLab un polinomio è rappresentato da un vettore riga che contiene i coefficienti in ordine decrescente delle potenze del polinomio medesimo.

Corso IFTS 2010-2011 42Ilaria Pietroni

Corso IFTS 2010-2011 43Ilaria Pietroni

Operatori relazionali

Operatori logici

Polinomi

Iteratori

Gestione files

Interpolazione

Corso IFTS 2010-2011 Ilaria Pietroni 44

L’ interpolazione è un metodo per individuare nuovi punti del piano cartesiano a partire da un insieme finito di punti dati, nell'ipotesi che tutti i punti si possano riferire ad una funzione f(x).

Nelle attività scientifiche e tecnologiche, e in genere negli studi quantitativi di qualsiasi fenomeno, accade molto spesso di disporre di un certo numero di punti del piano ottenuti con un campionamento o con apparecchiature di misura e di ritenere opportuno individuare una funzione che passi per tutti i punti dati o almeno nelle loro vicinanze.

Corso IFTS 2010-2011 Ilaria Pietroni 45

0 1 2 3 4 5 6 7 8 9 10 11-8

-6

-4

-2

0

2

4

6

8

?

In questa serie manca il valore relativo al quinto elemento della x.

E’ possibile stimarlo in qualche modo?

Quale valore lo approssima meglio?

x y

1 2

2 6

3 5

4 1

5 NaN

6 -4

7 -7

8 -6

9 -3

10 0

Corso IFTS 2010-2011 Ilaria Pietroni 46

Se la funzione utilizzata per unire un punto con il successivo è una retta l’interpolazione si dice lineare.

0 1 2 3 4 5 6 7 8 9 10 11-8

-6

-4

-2

0

2

4

6

8

Ci sono diversi modi per poter interpolare i dati:

x y

1 2

2 6

3 5

4 1

5 -1.5

6 -4

7 -7

8 -6

9 -3

10 0

Corso IFTS 2010-2011 Ilaria Pietroni 47

Se la funzione utilizzata per unire tutti i punti è un unico polinomio di un grado opportuno, l’interpolazione si dice polinomiale.

Ci sono diversi modi per poter interpolare i dati:

Grado Valore

0 -0.67

1 -0.11

2 -2.20

3 -0.92

4 -2.08

5 -2.13

6 -1.55

7 -1.88

0 1 2 3 4 5 6 7 8 9 10 11-8

-6

-4

-2

0

2

4

6

8

0

12

3

4

56

7

Corso IFTS 2010-2011 Ilaria Pietroni

La funzione polyfit cerca i coefficienti di un polinomio p(x) di grado n che fitti (tramite i minimi quadrati) con i dati

p(x)=p1xn+ p2xn-1 +…+pnx1 +pn+1x0

La sintassi è: p = polyfit(x,y,n)

Dove x ed y sono vettori della stessa grandezza ed n è il grado del polinomio.Il vettore risultante p ha per elementi I coefficienti del polinomio in ordine discendente.

polyfit

48

Corso IFTS 2010-2011 Ilaria Pietroni

INTERPOLAZIONE

49

Corso IFTS 2010-2011 Ilaria Pietroni 50

Prova_poly