Curs7_Matlab

9
 1 CURS 7 Matlab Introducere în programarea Matlab Matlab este un pachet de programe care lucreaz ă cu un singur tip de obiecte – matrice numerice rectangulare, cu elemente complexe sau reale. Scalarii sunt asim ila ţi cu o matrice cu o linie şi o coloană, iar vectorii sunt considera ţi matrice cu o linie ( 1  n × ) sau cu o coloan ă ( 1 n × ). Definirea matricelor, în Matlab se face prin una din metodele: 1. Introducerea explicit ă a listei de elemente care trebuie s ă respecte următoarele reguli: - elementele unei linii se separ ă prin spa  ţ iu (blanc) sau virgulă (,) - liniile se separă prin punct  şi virgulă (;) - elementele matricei sunt cuprinse între paranteze drepte ( [ ] ). 2. Generarea matricelor prin instruc ţiuni şi funcţii. 3. Crearea de fi şiere Matlab (de tip m). 4. Încărcarea din fi şiere de date externe. Identificarea elementelor unei matrice (A) se realizeaz ă prin nota ţia A(i,j) şi semnifică elementul de la intersec ţia liniei i cu coloana  j. Matlab este un limbaj de expresii. Expresiile tip ărite de utilizator sunt interpretate şi evaluate. Instrucţiunile sunt de cele mai multe ori de forma: variabila = expresie sau mai simplu: expresie Expresiile sunt formate din operatori, func ţii, nume variabile, etc. Orice instrucţiune se termină în mod normal cu “Enter”. Dac ă ultimul caracter al acesteia este ; (punct şi virgul ă), instrucţiunea este executat ă dar tipărirea rezultatului este eliminată. Funcţii predefinite în Matlab 1. Funcţia putere de ordinul n: a^n - Ridicarea numărului a la puterea n (  n a ) 2. Funcţia putere de ordinul 2: pow2(n) – Calculează valoarea numărului 2 la puterea n (2 n ) 3. Funcţia exponen  ţ ială: exp(x) - Calculeaz ă exponenţiala (e x ) 4. Funcţia logaritm: log(x) Calculeaz ă logaritmul natural (ln(x)) logn(x) – Calculeaz ă logaritmul în baza n din x (  ( ) log n  x ) 5. Funcţia radical de ordinul 2: sqrt(n) – Calculează radical de ordin 2 din num ărul n 6. Funcţiile trigonometrice: sin(x), cos(x), tan(x), cot(x) 7. Funcţia factorial: factorial(n) – Calculează factorialul numărului n 8. Funcţia rest : rem(x,y) Calculeaz ă restul împărţirii lui  x la  y element cu element 9. Funcţia semn: sign(x) – Asociaz ă fiecărui element al vectorului  x elementele -1, 0, 1 astfel: 1 dacă x>0 ( ) 0 dacă x=0 1 dacă x<0 sign x  =    10. Funcţia mărimea unui matrice: size(x) – Determin ă mărimea fiecărei dimensiuni a matricei x: [nr. linii nr. coloane].

description

curs 7 matlab

Transcript of Curs7_Matlab

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 1/9

  1

CURS 7 Matlab

Introducere în programarea MatlabMatlab este un pachet de programe care lucrează cu un singur tip de obiecte – matrice

numerice rectangulare, cu elemente complexe sau reale. Scalarii sunt asimilaţi cu o matrice cuo linie şi o coloană, iar vectorii sunt consideraţi matrice cu o linie (1   n × ) sau cu o coloană ( 1n × ).

Definirea matricelor, în Matlab se face prin una din metodele:

1.  Introducerea explicită a listei de elemente care trebuie să respecte următoarelereguli:

-  elementele unei linii se separă prin spa ţ iu (blanc) sau virgulă (,)-  liniile se separă prin punct  şi virgulă (;)-  elementele matricei sunt cuprinse între paranteze drepte ( [ ] ).

2.  Generarea matricelor prin instrucţiuni şi funcţii.3.  Crearea de fişiere Matlab (de tip m).4.  Încărcarea din fişiere de date externe.

Identificarea elementelor unei matrice (A) se realizează prin notaţia A(i,j) şi semnifică 

elementul de la intersecţia liniei i cu coloana j.

Matlab este un limbaj de expresii. Expresiile tipărite de utilizator sunt interpretate şievaluate. Instrucţiunile sunt de cele mai multe ori de forma:

variabila = expresiesau mai simplu:

expresieExpresiile sunt formate din operatori, funcţii, nume variabile, etc.Orice instrucţiune se termină  în mod normal cu “Enter”. Dacă  ultimul caracter al

acesteia este ; (punct şi virgulă), instrucţiunea este executată  dar tipărirea rezultatului esteeliminată.

Funcţii predefinite în Matlab 

1.  Funcţia putere de ordinul n: a^n - Ridicarea numărului a la puterea n (   n a  )2.  Funcţia putere de ordinul 2: pow2(n) – Calculează valoarea numărului 2 la puterea n 

(2n)3.  Funcţia exponen ţ ială: exp(x) - Calculează exponenţiala (ex)4.  Funcţia logaritm: log(x) – Calculează logaritmul natural (ln(x))

logn(x) – Calculează logaritmul în baza n din x (   ( )logn    x  )

5.  Funcţia radical de ordinul 2: sqrt(n) – Calculează radical de ordin 2 din numărul n 6.  Funcţiile trigonometrice: sin(x), cos(x), tan(x), cot(x)7.  Funcţia factorial: factorial(n) – Calculează factorialul numărului n 

8.  Funcţia rest : rem(x,y) – Calculează  restul împărţirii lui  x  la  y element cuelement

9.  Funcţia semn: sign(x) – Asociază fiecărui element al vectorului  x elementele -1, 0, 1

astfel:

1 dacă x>0

( ) 0 dacă x=0

1 dacă x<0

sign x 

= −

 

10. Funcţia mărimea unui matrice:  size(x) – Determină  mărimea fiecărei dimensiuni amatricei x: [nr. linii nr. coloane].

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 2/9

  2

11. Funcţia dimensiunea maximă  a unei matrice: length(x) – Determină  mărimea celeimai mari dimensiuni a matricei x.

Dacă  x este un vector funcţia length(x) determină numărul de elemente al vectorului.Obs.  length(x) este echivalent cu max(size(x)).

12. Funcţia suma: sum(x) – Calculează  suma elementelor vectorului  x  (dacă  x  este unvector) sau determină  un vector linie care conţine suma elementelor de pe fiecare

coloană (dacă  x este o matrice).13. Funcţiile maxim  şi minim: max(A), min(A) – Determină cel mai mare, respectiv celmai mic element al vectorului A (dacă  A este un vector) sau determină un vector liniecare conţine cel mai mare, respectiv cel mai mic element de pe fiecare coloană (dacă  A este o matrice).

Constante Matlab

1.  pi - 3.14159265 (π  )2.  i – Unitate imaginară 3.   j - Unitate imaginară 4.  Inf – Infinit ( ∞ )5.  NaN – Nu este număr

6.  realmin – Cel mai mic număr real7.  realmax – Cel mai mare număr real

Caractere speciale

Cractere Matlab Semnificaţie: Defineşte rangul elementelor tabloului ( ) Definirea argumentelor unei funcţii sau

prioritatea execuţiei operaţiilor[ ] Definirea unui tablou{ } Definirea celulelor unui tablou. Punct zecimal sau câmp separator... Continuare afirmaţie pe o linie nouă , Separator al elementelor de pe aceeaşi linie a

tabloului; Separator al elementelor de pe aceeaşi coloană a

tabloului% Inserare linie de comentariu

Operaţii aritmeticePentru efectuarea operaţiilor aritmetice se utilizează următoarele simboluri:

Forma algebrică  Forma Matlab  Semnificaţiea+b a+b Adunarea matricelora-b a-b Scăderea matricelora*b a*b Înmulţirea matricelora:b a/b Împărţirea matricelor la dreaptab:a b\a Împărţirea matricelor la stângaab  a^b Puterea matriceiaT  a′  Transpusa matricei

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 3/9

  3

= = Asignare, . Punct zecimal

.* Înmulţirea tablourilor(element cu element)

./ Împărţirea tablourilor la dreapta(element cu element)

.\ Împărţirea tablourilor la stânga

(element cu element).^ Puterea unui tablou

(element cu element). ′  Transpusa unui tablou

(element cu element)

Expresiile aritmetice pot fi evaluate şi rezultatul memorat în variabilele specificate.O valoare introdusă  f ără  a fi denumită  este atribuită variabilei ans  (answer = răspuns) carememorează valoarea ultimei variabile căreia nu i s-a atribuit un nume.

Ordinea efectuării operaţiilor aritmetice este cea cunoscută din matematică: paranteze-ridicare la putere – înmulţire şi împărţire – adunare şi scădere.

Limitele calculelor: domeniul -3082.2251 10⋅   (funcţia “realmin”) şi 3081.7977 10⋅  (funcţia “realmax” ). Pentru rezultate mai mari decât limita maximă, Matlab răspunde cu Inf ,iar pentru rezultate mai mici decât limita minimă, se înregistrează 0 (zero).

Operaţii aritmetice cu tablouri 

Operaţiile cu tablouri sunt operaţii aritmetice (înmulţire, împărţire, ridicare la putere,etc) între elementele situate în aceeaşi poziţie a tablourilor, sau operaţii element cu element.

Pentru a preciza că înmulţirea se efectuează element cu element între componentele adouă tablouri, de aceleaşi dimensiuni, se utilizează operatorul de înmulţire precedat de punct(.*).

Exemplificând se obţine:

A= [2 5 6] şi B= [4 3 2] Adunare: A+B= [6 8 8]

 Înmul ţ ire: A.*B= [8 15 12]

 Înmul ţ ire cu un scalar :pentru un scalar p=2: A.*p= [4 10 12] sau A*p= [4 10 12]

 Împăr  ţ ire la dreapta: A./B = [0.5000 1.6667 3.0000]A./p = [1 2.5 3] sau A/p = [1 2.5 3]

p./A = [1 0.4 0.3333]

 Împăr  ţ ire la stânga: A.\ B = [2 0.6 0.3333] = B. / A

 Ridicare la putereInstrucţiunea Z = X.^Y reprezintă ridicarea fiecărui element din tabloul X la puterea

indicată de valoarea elementului din aceeaşi poziţie a tabloului Y.A.^B = [16 125 36]; A.^p = [4 25 36].

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 4/9

  4

Transpunerea tablourilor :

2

' 5

6

A

=

.

Operaţii aritmetice cu vectori 

Produsul scalar  a doi vectori de aceeaşi dimensiune: dot(a,b) - Este un scalar, egal cusuma produselor corespunzătoare aceloraşi poziţii (

1

( ) ( )n 

a b a i b i  =

⋅ = ⋅∑

). 

Exemplu:a = [1 2 3];b = [4 5 6];

produsul scalar: dot(a,b)=32

Produsul vectorial  a doi vectori de aceeaşi dimensiune: cross(a,b) – Este un vector

care determină produsul vectorial ( a b ×

).

cross(a,b) = [ -3 6 -3]

Produsul vectorial al vectorilor u; v este un vector notat u v× care satisface

condiţiile:

1) este perpendicular pe cei doi vectori (deci pe planul generat de u şi v);2) sensul este astfel incat tripletul (u; v; u _ v) este pozitiv;3) marimea vectorului u _ v este egala cu aria paralelogramului construit pe cei doi vectori:

)u v = u v sin(u,v×   i i  IV 

Operaţii aritmetice cu matrice 

Operaţiile uzuale de algebră  liniară  cu matrice sunt simbolizate cu semnele graficeprezentate (*, /, \, ^, ′, +, -) şi se efectuează după regulile cunoscute din calculul matriceal.

Exemple:

1 2

3 4A

  =

;

5 6

7 8B 

  =

 

Se obţine:6 8

10 12

A B  

+ =

;4 4

4 4

A B   − −

− = − −

;3 4

5 6

A p  

+ =

 unde p=2 (scalar).

 Înmul ţ irea matricelor   se simbolizează  cu operatorul * şi se calculează  după  regulilecunoscute: , unde: ( , ) ( , ) ( , )Z A B z i j a i k b k j  = ∗ = ⋅∑  

19 22A*B =

43 50

.

 Împăr  ţ irea la dreapta: A/B identică cu 1A B −∗  

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 5/9

  5

3 -2A/B=

2 -1

.

 Împăr  ţ irea la stânga: A\B identică cu 1A B −∗  

-3 -4 \ 

4 5A B 

  =

.

 Ridicare la putere: A^p are sens doar dacă  A este matrice pătrată şi  p este un scalar( p

 ori

A = ...p 

A A A∗ ∗ ∗ ).

3 37 54

81 118A

  =

.

Transpunerea matricelor : A′, prin care se schimbă  între ele liniile şi coloanelematricei A.

1 3'

2 4A

  =

.

Instrucţiuni şi funcţii de control în Matlab

Programele Matlab realizează  paşi secvenţiali, iar operaţiile sunt executate succesiv.Uneori, este nevoie să  se realizeze o selecţie, a unui grup de instrucţiuni, în funcţie devaloarea de adevăr a unei expresii. În acest caz, instrucţiunile utilizează operatori relaţionali şioperatori logici.

1.  Operatori relaţionali

Matlab dispune de un număr de 6 operatori relaţionali, utilizaţi pentru a compara două matrice de dimensiuni egale.

Operatorii relaţionali sunt:

Simbol Matlab Semnificaţia< mai mic> mai mare

<= mai mic sau egal>= mai mare sau egal= = identic egal~ = diferit

Operatorii relaţionali compară  două  matrice, element cu element şi returnează  omatrice de aceeaşi dimensiune cu cea a matricelor care se compară, având elemente de 1 dacă relaţia este adevărată şi elemente 0 (zero) dacă relaţia este falsă.

Primii 4 operatori compară  numai partea reală  a operanzilor (partea imaginară  esteignorată), iar ultimii 2 operatori tratează atât partea reală cât şi partea imaginară.

Forma generală de utilizare a operatorilor relaţionali este:

rezultat = expresie_1 op_rela ţ ionali expresie_2

Dacă unul dintre operanzi este un scalar iar celălalt o matrice, scalarul se transformă ladimensiunea matricei.

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 6/9

  6

2.  Operatorii logici din Matlab sunt:

Simbol Matlab Prioritatea Semnificaţia~ 1 Nu& 2 Şi| 3 Sau

Obs:-  Operatorii logice returnează 1 (Adevărat) pentru orice valoare diferită de zero.-  În Matlab, orice valoare diferită de zero este considerată adevărată logic, adică 1.-  Operatorii logici au prioritate mai mică decât operatorii relaţionali şi aritmetici.

Instrucţiuni de control logic în Matlab sunt:

if Instrucţiune pentru execuţia condiţionată else Instrucţiune asociată cu “if”elseif Instrucţiune asociată cu “if”

 for Instrucţiune pentru crearea ciclurilor cu număr specificat de paşi

while Instrucţiune pentru crearea ciclurilor cu condiţie logică break Instrucţiune pentru terminarea forţată într-un ciclureturn Determină execuţia la funcţia precizată error Instrucţiune pentru afişarea unui mesaj de eroareend Instrucţiune pentru încheierea ciclurilor “for”, “while”, “if”

1.  Instrucţiunea if  simplă 

Instrucţiunea if  poate fi simplă sau poate include clauzele else sau elseif .Forma generală a unei instrucţiuni if  simplă este:

if   expresie logică 

grup de instrucţiuniend

Dacă valoarea logică a expresie logică este adevărată, se execută grupul de instrucţiunidintre instrucţiunea if  şi instrucţiunea end .

2.  Instrucţiunea if  cu clauza else 

Forma generală a unei instrucţiuni if  cu clauza else simplă este:if   expresie logică 

grup de instrucţiuni Aelse 

grup de instrucţiuni Bend

Se foloseşte pentru a executa grup de instruc ţ iuni A, dacă  expresie logică  esteadevărată şi grup de instruc ţ iuni B, dacă expresie logică este falsă.

3.  Instrucţiunea if  cu clauza elseif  

Forma generală a unei instrucţiuni if  cu clauza elseif  simplă este:

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 7/9

  7

if   expresie logică 1grup de instrucţiuni A

elseif  expresie logică 2grup de instrucţiuni B

end

Dacă este nevoie de o instrucţiune if  cu mai multe condiţii logice de testat, atunci sefoloseşte instrucţiunea if  cu clauza elseif .

4. 

Instrucţiunea repetitivă  for 

Această  instrucţiune se foloseşte pentru repetarea unui grup de instrucţiuni de unanumit număr de ori, cunoscut iniţial. Numărul de repetări ale instrucţiunilor din ciclu esteevidenţiat prin-un contor sau index.

Forma generală a instrucţiunii este:

 for index = expresie

grup de instrucţiuniend  

unde:-  index este numele contorului-  expresie este o matrice, un vector sau un scalar

În aplicaţii,index = expresie este de forma: k = iniţial : pas : final

unde:k  este contor sau indexini ţ ial este prima valoare a lui k  

 pas este incrementul contorului (dacă lipseşte este implicit 1)

 final este cea mai mare valoare a lui k .

La fiecare pas al ciclului for  indexul are valoarea uneia dintre valorile expresiei. Dacă expresie este o matrice, ciclarea se face pe coloane.

Regulile impuse pentru folosirea unui ciclu for  sunt:-  index trebuie să fie o variabilă -  dacă  expresie  este o matrice goală, bucla nu se execută  şi se trece la următoarea

instrucţiune, după instrucţiunea end-  dacă expresie este un scalar, bucla se execută o singură dată, iar indexul ia valoarea

scalarului -  dacă expresie este un vector, bucla se execută de atâtea ori câte elemente are vectorul,

de fiecare dată indexul având valoarea egală cu cea a elementelor vectorului -  dacă expresie este o matrice, bucla se execută de atâtea ori câte coloane are matricea,

iar indexul va avea la fiecare iteraţie valorile din coloanele matricei -  la terminarea ciclului, indexul are ultima valoare utilizată (final) -  dacă se utilizează forma: 

 for  k = iniţial : pas : finalgrup de instrucţiuni

end  

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 8/9

  8

ciclul se execută de n ori, unde, 1final initial 

n pas 

−= +

 (parantezele drepte semnifică  parte

 întreagă). Dacă n este negativ ciclul for nu se execută.

5. 

Instrucţiunea repetitivă while Se utilizează  pentru repetarea unui grup de instrucţiuni în funcţie de valoarea

adevărată a unei expresii. Numărul de iteraţii nu este cunoscut iniţial.Forma generală este:

while  expresiegrup de instrucţiuni

end

Grup de instrucţiuni se execută cât timp expresie are toate elementele nenule.De cele mai multe ori, expresie este de forma:

expresie_1 operator relaţional expresie_2 

Dacă  condiţia logică  din expresie  este îndeplinită  atunci se execută  grup deinstrucţiuni, apoi condiţia logică  este verificată  din nou. Dacă  este adevărată, atunci seexecută  grup de instrucţiuni, dacă  este falsă  se execută  următoarea instrucţiune după instrucţiunea end .

Dacă  expresie  este tot timpul adevărată, atunci bucla while  se execută de un numărinfinit de ori. Ieşirea dintr-o astfel de buclă se face prin comanda [Ctrl]+[c].

6. 

Instrucţiunea  break Această  instrucţiune se utilizează  pentru ieşirea dintr-o buclă  înainte de terminarea

acesteia. Se recomandă  instrucţiunea break   dacă  o condiţie de eroare este detectată  îninteriorul unei bucle. Rezultatul acestei instrucţiuni este oprirea execuţiei ciclurilor  for   şiwhile. În cazul unor cicluri incluse, instrucţiunea break   comandă  ieşirea din ciclul cel mai

interior.

7. 

Instrucţiunea  return  comandă  ieşirea din fişierul Matlab (*.m) către funcţiacare l-a apelat sau către tastatură. 

8.  Instrucţiunea error  permite afişarea unui mesaj text la întâlnirea unei erori.Sintaxa acestei instrucţiuni este: error(′  mesaj′  ). 

După afişarea textului mesaj controlul este redat tastaturii.

Funcţii de control general 

1.  Doc Documentaţie on-line, pe display, help-ul din Matlab2.  Demo Acces la producţiile demo prin help-ul din Matlab3.  Help În fereastra de comandă prezentarea help-ului pentru funcţiile Matlab4.  web Deschidere site web sau fişiere web sau Help5.  Exit   Închiderea MATLAB (la fel ca şi comanda quit )6.  Clc Ştergere fereasta comenzi7.  Home Mutarea cursorului în partea superioară  colţul din stânga al ferestrei de

comenzi

7/21/2019 Curs7_Matlab

http://slidepdf.com/reader/full/curs7matlab 9/9

  9