Curs7_Matlab
-
Upload
sorinopris -
Category
Documents
-
view
212 -
download
0
description
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
i
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