• Non ci sono risultati.

Università degli Studi di Napoli Federico II CdL Ing. Elettrica

N/A
N/A
Protected

Academic year: 2022

Condividi "Università degli Studi di Napoli Federico II CdL Ing. Elettrica"

Copied!
21
0
0

Testo completo

(1)

Introduzione a MATLAB Introduzione a MATLAB

Università degli Studi di Napoli Federico II CdL Ing. Elettrica

Corso di Laboratorio di Circuiti Elettrici

lezione n. 3 lezione n. 3

Dr. Carlo Petrarca

Dipartimento di Ingegneria Elettrica Università di Napoli FEDERICO II

lezione n. 3

lezione n. 3

(2)

File .m

File .m – – Editor Editor di file .m di file .m

Un file .m (M-file) è un programma riconoscibile da Matlab.

E’ un file di testo contenente codice MATLAB In Matlab è presente un editor di files .m

Per accedere all’editor: File → New → M-file

Con il comando Save il file sarà salvato nella Current Directory

(3)

I vantaggi di un file .m sono notevoli. Infatti, si può:

Eseguire un algoritmo senza dover digitare ogni

Se si crea un file prova.m e si digita al prompt il comando

>>prova

Matlab eseguirà tutte le istruzioni contenute nel file.

Eseguire un algoritmo senza dover digitare ogni volta una lunga serie di comandi

Ottenere una documentazione del lavoro svolto Cambiare dati senza dover digitare nuovamente tutti i comandi

Scambiare programmi con altri utenti

(4)

Creare la matrice A[3*4]

Estrarre da A il vettore b

File .m

File .m – – Esercizio Esercizio – – esempio1.m esempio1.m

7 11 3 6 22 5 6 12

4 3 2 8

A

 

 

=  − − 

 

 

{

4 3 2 8

}

b =

4 3

  

 

Creare il vettore bt (trasposta di b)

Calcolare s, prodotto scalare tra la prima riga di A

3 2 8 b

  

=  

  

 

(5)

% Esempio n.1 di utilizzo Matlab

% Ripulisco la Command Window clc;

% Cancello dalla memoria tutte le variabili clear all;

% Creazione della matrice A

A=[7 11 3 6; 22 -5 -6 12; 4 3 2 8];

A=[7 11 3 6; 22 -5 -6 12; 4 3 2 8];

% Estrazione del vettore b b=A(3,:);

% Trasposta di b bt=b';

% Prodotto 1^riga di A per bt s=A(1,:)*bt

(6)

Stringhe Stringhe

In MATLAB è possibile operare, oltre che su numeri, anche su parole (stringhe di caratteri)

>> a='Ingegneria‘

a =

Le stringhe si manipolano come i vettori

Un testo in MATLAB è un vettore di caratteri

La stringa va inserita tra apici ‘ ‘

a =

Ingegneria

>> size(a) ans =

1 10

La stringa va inserita tra apici ‘ ‘

La stringa ‘Ingegneria’ è una

matrice [1 ×××× 10]

(7)

Immissione di dati da tastiera: input Immissione di dati da tastiera: input

>> a=input('Inserisci il numero desiderato= ') Inserisci il numero desiderato= 8

a = 8

>> b=input('Inserisci la stringa desiderata= ', 's') Inserisci la stringa desiderata= Lezione

Inserisci la stringa desiderata= Lezione b =

Lezione

>> c=input('Inserisci il vettore desiderato= ') Inserisci il vettore desiderato= [5 7 11]

c =

5 7 11

(8)

ciclo

ciclo for for …. end …. end

MATLAB come linguaggio MATLAB come linguaggio

di programmazione di programmazione

ciclo

ciclo if if … end … end ciclo

ciclo while while … end … end

(9)

Controllo di flusso: ciclo

Controllo di flusso: ciclo for for …. end …. end

Il ciclo for ha la seguente struttura:

for variabile = espressione istruzioni

end

Il ciclo for consente di ripetere un certo numero di volte le istruzioni in esso contenute

end

for k=1:4 y(k)=2^k;

end

>> y y =

2 4 8 16 Esempio:

Calcolare il valore della funzione y(k)=2^k per k=1,2,3,4

(10)

L‘uso eccessivo di cicli for può allungare i tempi di calcolo Basta fare una verifica con le istruzioni sotto riportate. Il vettore V=R*I viene ricavato in due modi diversi:

a) si usa un ciclo for;

b) si usa il prodotto elemento per elemento.

Il risultato è lo stesso, ma i tempi di calcolo sono estremamente diversi!

estremamente diversi!

a) R=[1:1:1e+5]; I=[1:1:1e+5];tic; for k=1:1e+5; V(k)=R(k)*I(k); end;toc;

b) R=[1:1:1e+5]; I=[1:1:1e+5]; tic;V=R.*I;toc;

(11)

Controllo di flusso: ciclo if … end Controllo di flusso: ciclo if … end

Il ciclo if ha la seguente struttura:

if espressione istruzioni end

Il ciclo if consente di eseguire istruzioni solo se una determinata espressione risulta vera

end

if k==2 y=1;

elseif k==4 y=0;

end if k==2

y=1;

end

if k>0 y=1;

else y=0;

end

(12)

% Esempio n.2 ciclo if … end clc; clear all;

% Immissione dati da tastiera A=input('Inserisci un numero=');

if A==5 if A==5

disp('Ho immesso il numero 5');

elseif A==3

disp('Ho immesso il numero 3');

else

disp('Il numero immesso è diverso da 3 e diverso da 5');

(13)

== uguale

~= diverso da

Per il controllo di flusso occorrono gli operatori relazionali gli operatori relazionali più comuni sono:

< minore di

<= minore o uguale

> maggiore di

>= maggiore o uguale

(14)

Creare un vettore di 10.000 elementi scelti in modo casuale secondo una distribuzione uniforme nell’intervallo [0,100].

Valutare poi la percentuale di elementi compresa nei seguenti intervalli:

I1: [0,25[ I2: [25,50[ I3: [50,75[ I4: [50,75[

(15)

Ntot=10000; % Numero di elementi

a=0; b=100; U=a+(b-a).*rand(Ntot,1); % creazione del vettore N1=0; N2=0; N3=0; N4=0; % Inizializzazione

for k=1:Ntot

if U(k)>=0 & U(k)<25 N1=N1+1;

elseif U(k)>=25 & U(k)<50 N2=N2+1;

elseif U(k)>=50 & U(k)<75 N3=N3+1;

N3=N3+1;

elseif U(k)>=75 & U(k)<100 N4=N4+1;

end end

disp('Percentuali rilevate');

disp(' %N1 %N2 %N3 %N4 ')

disp([N1/Ntot*100 N2/Ntot*100 N3/Ntot*100 N4/Ntot*100])

(16)

I cicli possono essere innestati, uno dentro l’altro.

for variabile1 = espressione1 for variabile2 = espressione2

istruzioni end

end

for k=1:3 for j=1:2

>> a for j=1:2

a(j,k)=k*j;

end end

a =

1 2 3 2 4 6

(17)

Controllo di flusso:

Controllo di flusso: while while … … end end

Il ciclo while consente di eseguire un blocco di istruzioni finchè una determinata espressione risulta vera. Quando l’espressione risulta falsa, il flusso del programma esce dal ciclo.

Il ciclo while ha la seguente struttura:

while espressione istruzioni

num=10;

eps=.1;

k=0;

while eps<num k=k+1;

a(k)=num;

num=num/2;

>> a a =

10.0 5.0 2.5 1.25 0.625 0.3125 0.1563

istruzioni

end

(18)

Il comando break Il comando break

Il comando break consente di uscire rapidamente da un ciclo for o while. Se break è presente in un ciclo innestato, esso consente l’uscita solo dal ciclo interno.

clear all; clc;

k=0;

k=0;

while 1

n=input('Scrivi un numero= ') if n<0, break, end

k=k+1;

m(k)=n^2;

Il ciclo continua finchè

non viene inserito un

numero minore di zero

(19)

Esercizio

Esercizio – – esempio3.m esempio3.m

Creare un file .m con cui valutare l’epsilon di macchina

L’epsilon di macchina ε è il numero più piccolo che sommato ad 1 restituisce un valore maggiore di 1 :

ε + > 1 1

ε dà indicazioni sul massimo numero di cifre significative In Matlab la costante eps contiene il valore dell’epsilon di macchina

2.2204 16

eps = e

(20)

% Esempio n.3

% Calcolo dell'epsilon di macchina nella forma 2^-k

% Ripulisco la Command Window e cancello le variabili clc; clear all;

k=0;

epsilon=1; % Comincio dal numero 2^0 while 1~=1+epsilon

epsilon = epsilon/2; % Dimezzo il valore di epsilon epsilon = epsilon/2; % Dimezzo il valore di epsilon k=k+1;

end

% Il ciclo è eseguito una volta in più del necessario

% Correggo i valori di epsilon e di k

(21)

Esercizi Esercizi

1) Creare un file .m con cui valutare il più piccolo numero x

min

rappresentabile in Matlab nella forma 2^k

x

min

è il numero per il quale si ha (x

min

/2)=0

2) Creare un file .m con cui valutare il più grande numero 2) Creare un file .m con cui valutare il più grande numero x

max

rappresentabile in Matlab nella forma 2^k

x

max

è il numero per il quale si ha (x

max

*2)=inf

Riferimenti

Documenti correlati

(prezzi medi della settimana precedente) - I prezzi si intendono per prodotto di I cat. selezionato ed imballato reso franco magazzino produttore a peso netto

piste ciclabili prevalentemente in sede propria o contigue al marciapiede bidirezionali ELEMENTI DI MOBILITA' CICLABILE ATTUALI. parchi ed aree ricreative e sportive, parchi

CEREALI E COLTIVAZIONI INDUSTRIALI Modalità Provincia Prezzo U.M.(p) Quantità U.M.(q) Grano tenero. Frumento

Le quotazioni delle singole province si riferiscono ai diversi contratti conclusi nella settimana di riferimento e sono calcolate come media ponderata dei prezzi sulle

Vodka o Gin, foglie di basilico, lime, pompelmo rosa, sciroppo di miele. Brasilian sunset

CEREALI E COLTIVAZIONI INDUSTRIALI Modalità Regione Prezzo U.M.(p) Quantità U.M.(q) Grano tenero. Frumento

CEREALI E COLTIVAZIONI INDUSTRIALI Modalità Regione Prezzo U.M.(p) Quantità U.M.(q) Grano duro. Frumento

avena Euro n.q.. orzo vestito naz. arrivo alla rinfusa) Euro n.q... Tritello di