La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente 2010-2011 Corso IFTS 2010-20111Ilaria Pietroni.

Presentazioni simili


Presentazione sul tema: "Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente 2010-2011 Corso IFTS 2010-20111Ilaria Pietroni."— Transcript della presentazione:

1 Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente 2010-2011 Corso IFTS 2010-20111Ilaria Pietroni

2 Corso IFTS 2010-20112Ilaria Pietroni Operatori relazionali Operatori logici Polinomi Iteratori Gestione files Interpolazione

3 Corso IFTS 2010-2011Ilaria Pietroni Ogni operatore restituisce 0 se la relazione è falsa 1 se è verificata Operatori Relazionali 3

4 Prova_operatori Corso IFTS 2010-2011Ilaria Pietroni4 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

5 Prova_operatori Corso IFTS 2010-2011Ilaria Pietroni5 A=[1 3; 4 6]; B=[3 7; 4 6]; disp('A<=B') A<=B disp('A<B') A<B

6 Corso IFTS 2010-20116Ilaria Pietroni Operatori relazionali Operatori logici Polinomi Iteratori Gestione files Interpolazione

7 Corso IFTS 2010-2011Ilaria Pietroni Ogni operatore restituisce 0 se la relazione è falsa 1 se è verificata Operatori Logici 7

8 Prova_operatori Corso IFTS 2010-2011Ilaria Pietroni8 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)

9 Corso IFTS 2010-20119Ilaria Pietroni Operatori relazionali Operatori logici Polinomi Iteratori Gestione files Interpolazione

10 Istruzione IF-THEN-ELSE La forma generale del costrutto IF è la seguente if espressione logica 1 (condizione) operazioni1; elseif espressione logica 2 (condizione) operazioni2; else operazioni3; end Operazioni1,2,3 sono le operazioni da compiere se la condizione corrispondente risulta vera. Corso IFTS 2010-201110Ilaria Pietroni

11 Corso IFTS 2010-2011Ilaria 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

12 Esercizio n.1 Corso IFTS 2010-2011Ilaria Pietroni12 Modificare la function che calcola la temperatura potenziale aggiungendo la possibilità di settare in input la p a livello zero.

13 Istruzioni per cicli I 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-201113Ilaria Pietroni

14 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-201114Ilaria Pietroni

15 Corso IFTS 2010-2011Ilaria 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 successiva Kc=[Kc;k]; Kr=[Kr k]; end k % ultimo valore utilizzato Kc Kr % più semplicemente: Kcs=[a:n:b]' Krs=[a:n:b] 15

16 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-201116Ilaria Pietroni

17 Corso IFTS 2010-2011Ilaria Pietroni Prova_while s=[1:20];t=3; while s(t)<10 s(t)=1; t=t+1; end s 17

18 BREAK Corso IFTS 2010-2011Ilaria Pietroni18 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:3 A(i,1)=5; if det(A)==9 B else break %esce dal ciclo for B end A

19 Corso IFTS 2010-2011Ilaria Pietroni RETURN Utilizzato 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<2 b=2 return else c=b+5 end 19

20 Corso IFTS 2010-2011Ilaria Pietroni CONTINUE Utilizzato per cambiare l’ordine di esecuzione in un ciclo 20

21 Esercizio n.2 Corso IFTS 2010-2011Ilaria Pietroni21 Scrivere una function che data una serie temporale calcoli per ogni ora: 1)La media 2)La deviazione standard -) clocktotime -) trovare intervalli di un’ora -) per ogni intervallo calcolare i parametri AWSdata.m

22 Corso IFTS 2010-2011Ilaria Pietroni FIND s=[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

23 Esercizio n.3 Corso IFTS 2010-2011Ilaria Pietroni23 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.

24 Corso IFTS 2010-2011Ilaria 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] else a=[0:23] end if ~isfield(a,'minuti') a.minuti=[0:60] end if ismatrix(a) t=p else t=nan end 24

25 Corso IFTS 2010-2011Ilaria Pietroni IS* k='s0' if isnumeric(k) disp('E'' un numero') else disp('Non è un mumero') end if isstr(k) disp('E'' una stringa') else disp('Non è una stringa') End 25

26 Corso IFTS 2010-2011Ilaria Pietroni IS* p=[1,2,nan,5,7,4] o=[1,2,nan,5,7,4] if issame(p,o) disp('Sono gli stessi') else disp('Non sono gli stessi') end if isa(a,'struct') b=[1,5;9,6] else a=[1,5;9,6] end 26

27 Esercizio n.4 Corso IFTS 2010-2011Ilaria Pietroni27 Data la matrice finale dell’es 3 cercare tutti i nan.

28 Corso IFTS 2010-201128Ilaria Pietroni Operatori relazionali Operatori logici Polinomi Iteratori Gestione files Interpolazione

29 Corso IFTS 2010-2011Ilaria 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) pause A= fopen('mat.txt','r'); sec_mat=fscanf(A,'%f %f'); fclose(A) sec_mat OPEN

30 Corso IFTS 2010-2011Ilaria Pietroni 30 sec_mat sec_matINV=sec_mat‘ B= fopen('mat.txt','r'); sec_mat2=fscanf(B,'%f '); fclose(B) sec_mat2 sec_mat2INV=sec_mat2' OPEN

31 Corso IFTS 2010-2011Ilaria Pietroni 31 B= fopen('mat.txt','r'); sec_mat2=fscanf(B,'%f '); fclose(B) sec_mat2 sec_mat2INV=sec_mat2' OPEN

32 caratteri Corso IFTS 2010-2011Ilaria Pietroni32 Specificazionedescrizione %cCarattere singolo %dNotazione decimale (con segno) %fNotazione con punto %sstringa %uNotazione decimale (senza segno) %eNotazione esponenziale (con e) %ENotazione esponenziale (con E)

33 Corso IFTS 2010-2011Ilaria Pietroni 33 t=input('valore della costante stringa ', 's') t+100 l=str2num(t) l+100 INPUT

34 Corso IFTS 2010-2011Ilaria Pietroni 34 y=input('valore della costante numerica ') y+100 m=num2str(y) m+100 INPUT

35 Corso IFTS 2010-2011Ilaria Pietroni 35 load('NM.dat') LOAD

36 Corso IFTS 2010-2011Ilaria 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 on S.*4 B=A-S C=[] diary off

37 Corso IFTS 2010-2011 Ilaria Pietroni 37 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

38 Corso IFTS 2010-2011Ilaria Pietroni38 PRINT % % per salvare le figure: figure plot(a.giorni) print('giorni.jpg') % Supported Formats: bmp jpeg jpg png ppm tif tiff xbm xpm

39 Esercizio n.2 Corso IFTS 2010-2011Ilaria Pietroni39 a)Leggere il file b)Selezionare solo le colonne 1,3,5 c)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

40 Corso IFTS 2010-201140Ilaria Pietroni Operatori relazionali Operatori logici Polinomi Iteratori Gestione files Interpolazione

41 Corso IFTS 2010-2011Ilaria 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)=p 1 x n + p 2 x n-1 +…+p n x 1 +p n+1 x 0 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)=p 1 x n + p 2 x n-1 +…+p n x 1 +p n+1 x 0 il numero b è radice se p(b)=p 1 b n + p 2 b n-1 +…+p n b 1 +p n+1 b 0 POLINOMIO 41

42 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-201142Ilaria Pietroni

43 Corso IFTS 2010-201143Ilaria Pietroni Operatori relazionali Operatori logici Polinomi Iteratori Gestione files Interpolazione

44 Corso IFTS 2010-2011Ilaria Pietroni44 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.

45 Corso IFTS 2010-2011Ilaria Pietroni45 ? In questa serie manca il valore relativo al quinto elemento della x. E’ possibile stimarlo in qualche modo? Quale valore lo approssima meglio? xy 12 26 35 41 5NaN 6-4 7-7 8-6 9-3 100

46 Corso IFTS 2010-2011Ilaria Pietroni46 Se la funzione utilizzata per unire un punto con il successivo è una retta l’interpolazione si dice lineare. Ci sono diversi modi per poter interpolare i dati: xy 12 26 35 41 5-1.5 6-4 7-7 8-6 9-3 100

47 Corso IFTS 2010-2011Ilaria Pietroni47 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: GradoValore 0-0.67 1-0.11 2-2.20 3-0.92 4-2.08 5-2.13 6-1.55 7-1.88

48 Corso IFTS 2010-2011Ilaria 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)=p 1 x n + p 2 x n-1 +…+p n x 1 +p n+1 x 0 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

49 Corso IFTS 2010-2011Ilaria Pietroni INTERPOLAZIONE 49

50 Corso IFTS 2010-2011Ilaria Pietroni 50 Prova_poly


Scaricare ppt "Corso IFTS Tecnico Superiore per il monitoraggio e la Gestione del Territorio e dell'Ambiente 2010-2011 Corso IFTS 2010-20111Ilaria Pietroni."

Presentazioni simili


Annunci Google