Introducere
1. Pornirea Matlab-ului
Pe o platformă Windows, Matlab-ul de porneşte printr-un dublu click pe pictograma shortcut-ul de pe
desktop dau din orice altă locaţie
Pe o platformă Linux, Matlab-ul de porneşte prin scrierea comenzii “matlab” în promterul sistemului
de operare.
Modificarea parametrilor cu privire la directorului din care Matlab porneşte sau execută în mod
automat comenzile, se poate face prin crearea fişierului startup.m.
2. Închiderea aplicaţiei Matlab
Pentru a inchide sesiunea lucru din Matlab, selectăm File -> Exit MATLAB sau se poate scrie comanda
quit în Command Window. De asemenea se poate scrie un script finish.m ce va executa de fiecare dată
când matlabul este închis, funcţiile de salvare a workspace-ului sau de afişare a unei ferestre de dialog
de confirmare.
3. Desktopul Matlab-ului
Desktopul matlab-ului conţine în interfaţa grafică cu utilizatorul, instrumente de management al
fişierelor, variabilelor sau a aplicaţiilor asociate matlab-ului.
În figura de mai jos este prezentat desktopul implicit. Acesta poate fi customizat în funcţie de dorinţa
utilizatorului
Introducerea funcţiilor se face după promterul ferestrei Command Window
Fereastra Command History memorează
Funcţiile rulate
Matrici şi şiruri (arrays)
În matlab, matricile sunt definit ca un tabel dreptunghiular de numere sau mai general de elemente de
acelaşi tip. Matricile pot fi scalari: matrici cu un singur element, matrice 1 la 1, sau vectori: matrici cu 1
coloană sau 1 rând. In matalb, datele numerice sau nenumerice pot fi memorate şi în alte moduri dar
pentru început vom considera matricea singura posibilitate de reprezentare a datelor.
Avantajul folosirii matricilor este dat defaptul că în acest fel numerele pot fi folosite toate odata şi nu pe
rând.
Un exemplu de matrice, exemplu ce tot va fi folosit pe parcursul cursului apare în gravura
renaşcentistă Melancholia I (1514), de artistul şi matematicianul (amator) Albrecht Dürer.
( 21 mai 1471, Nürnberg - 6 aprilie 1528, Nürnberg, al treilea fiu din cei 18 copii ai lui Albrecht şi
Barbara, a fost un pictor, grafician şi teoretician al artei german, una din personalităţile de seamă ale
istoriei universale a artei. Opera sa impregnată de ideile Renaşterii, Umanismului şi Reformei a exercitat
o deosebită influenţă în special asupra artiştilor germani şi olandezi de mai târziu. Cu cele ca. 350 de
gravuri în lemn şi 100 gravuri în cupru a contribuit în mod hotărîtor la dezvoltarea gravurii ca formă de
artă de sine stătătoare.)
Pătratul magic al lui Albrecht Dürer, sculptat în opera sa Melancolía este considerat ca fiind primul din
artele europene. În pătratul de ordinul patru se obţine constanta magică (34) în rânduri, coloane,
diagonale principale, şi în cele patru submatricii de ordinul (2) în care se poate împărţi pătratul,
adăugând numerele din colţuri, cele patru numere centrale, numerele centrale ale primelor şi ultimelor
rânduri (sau coloane) etc. şi cifrele centrale ale ultimului rând.
Introducerea matricilor
În Matlab matricile pot fi introduse în următoarele moduri:
Introducerea unei liste explicite de elemente
Încărcarea dintr-un fişier extern
Generarea de matrici folosind funcţiile de generare interne (matlab)
Generarea de matrici folosind funcţiile de generare create de utilizator
Introducem matricea lui Durer respectând următoarele reguli:
Elementele dintr-un rând vor fi despărţite de virgulă sau spaţiu
Se foloseşte „;” la terminarea fiecărui rând
Intreaga listă de elemente se pune între „[ ]”.
Pentru a introduce matricea vom tasta în Command Window următoarele
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
Matlab va afişa matricea introdusă sub forma:
A=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
Odată matricea introdusă aceasta va fi memorată în workspace şi se va putea apela prin tastarea
numelui matricii „A”. În continuare vom vedea de ce acest pătrat (matrice) este magic.
Suma (sum), transpusa (trans) şi digonala (diag) matricei
Proprietăţile magice ale „pătratului magic” sunt date de faptul că se obţine acelaşi rezultat la
insumarea elementelor pătratului după anumite reguli: de-a lungul oricărui rând coloane sau
diagonale. Să verificam!
Prima comandă ce se poate da este:
sum(A)
Matlab-ul va afişa:
ans =
34 34 34 34
În cazul în care nu se specifică variabila de ieşire, Matlabul va utiliza denumirea generica:” ans” –
prescurtarea de la answer pentru a memora valoarea calculată.
Aplicând comanda sum asupra matricii A, matlab-ul a retunat un vector rând ce conţine rezultatele
sumelor celor 4 coloane, obţinându-se suma magică 34.
Deoarece Matlabul preferă să lucreze cu coloanele matricilor, pentru a putea face suma rândurilor
matricii va trebui să folosim transpusa acesteia (schimbarea randurilor cu coloanele). Transpusa matricii
A se obţine prin următoarea comandă:
A’
Ce va determina:
ans =
16 5 9 4
3 10 6 15
2 11 7 14
13 8 12 1
Iar comanda sum(A’) va produce un vector coloană ce va conţine suma rândurilor matricii.
ans =
34
34
34
34
Suma elementelor diagonalei principale se obţine din comanda sum aplicata funcţiei diag(A).
diag(A)
produce
ans =
16
10
7
1
şi
sum(diag(A))
produce
ans =
34
Suma elementelor celelăltei diagonale nu se poate face în mod direct deoarece matlab nu a
implemntat o funcţie directă de selectare a elementelor. Totuşi prin folosirea funcţiei de interschimbare
de la stânga la dreapta a elementelor matricii, fliplr, şi aplicând funcţia de selectare a elementelor de
diagonalei principale, pot fi selectate elementele diagonalei secundare.
sum(diag(fliplr(A)))
ans =
34
În acest mod am putut verifica dacă matricea lui Durer este intradevar magică.
Indici
Elementul din rândul i şi coloana j a matricei A poate fi apelat prin A(i,j). De exemplu A(4,2) este
elementul din randul 4 şi coloana 2. În cazul nostru A(4,2) este 15. Pentru a calcula suma elementelor
coloanei 4 vom scrie:
A(1,4) + A(2,4) + A(3,4) + A(4,4)
ce produce
ans =
34
Este de asemenea posibil sa ne referim la elementul unei matrici printr-un indice A(k). Acesta este
modul obişnuit ce referire in cadrul vectorilor rând sau coloană. Dacă ne referim în acelaşi mod în cazul
unei matrici bidimensionale atunci sirul de elementele va fi considerat ca un singur vector coloana
format din coloanele matricei originale. Astfel în cazul matricei Durer, A(8) este o altă modalitate de a ne
referila la valoarea 15 din locaţia A(4,2).
Dacă se încearca apelarea unei locaţii din afara matricei matlab-ul va returna un mesaj de eroare:
t = A(4,5)
Index exceeds matrix dimensions.
Pe de altă parte dacă se încearcă memorarea unei valori la o locaţie din afara matricii, atunci matlab-ul
va creşte numărul de coloane pentru a permite meorarea valorii la adresa specificată.
X = A;
X(4,5) = 17
X=
16 3 2 13 0
5 10 11 8 0
9 6 7 12 0
4 15 14 1 17
Operatorul două puncte (:)
Operatorul două puncte (:), este unul dintre cei mai importanţi operatori ai matlabului..Acest operator
se poate regăsi în una din următoarele situaţii.
Expresia:
1 : 10
generează un vector rând ce conţine numerele întregi de la 1 la 10
1 2 3 4 5 6 7 8 9 10
Pentru a obţine o incrementare neunitară a şirului, va trebui specificată valoarea incrementului:
100 : -7 : 50
Generează valorile:
100 93 86 79 72 65 58 51
iar 0: pi/4: pi
determină şirul
0 0.7854 1.5708 2.3562 3.1416
Expresie ce foloseşte un indice de referire la o anumită coloană a unei matrici:
A(1:k,j)
face referire la primele k elemente din coloana j a matricei A
Deci
sum(A(1:4,4))
va calcula suma primelor 4 elemente ale coloanei 4.
Operatorul două puncte se referă la toate elementele unei coloane sau ale unui rând iar cuvântul cheie
and se referă la ultima coloană sau rând ale matricii A.
sum(A(:,end))
va calcula suma elementelor ultimei coloane ale matricii A.
ans =
34
Funcţia magică
Matlab-ul are o funcţie ce creează pătrate magice de aproape orice mărime. Funcţia se numeşte magic.
B = magic(4)
B=
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Această matrice este aproape la fel ca cea gravata de Durer şi are aceleaşi proprietăţi „magice” doar că
două coloane din mijloc sunt inversate .
Pentru a obţine matricea lui Durer vom inversa coloanele din mijloc
A = B(:,[1 3 2 4])
ceea ce spune că matricea A va avea coloanele matricei B în ordinea 1, 3, 2, 4. Ceea ce va determina:
A=
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1
De ca a schimbat Durer coloanele 2 si 3 intre ele? Probabil că a vrut să sublinieze anul gravării 1514.
Expresii
Ca şi alte programe, Matlabul, pune la dispoziţia utilizatorului expresii matematice , dar spre deosebire
de alte limbaje de programare, aceste expresii vor implica întrega matrice şi nu doar un singur element.
Aceste expresii pot fi regăsite sub formă de:
variabile
numere
operatori
funcţii
Variabilele
Matlab nu cere ca tipul sau dimensiunea variabilelor să fie definite. Atunci când un nume nou de
variabilă este declarat, aceasta este creată în mod automat şi i se va aloca o anumită memorie.
Dacă variabila a mai fost declarată , Matlab ii va modifica valoarea conţinută şi dacă este cazul si
mărimea memoriei alocate.
De exemplu pentru:
num_students = 25
se va crea o matrice 1 la 1 numită num_students şi va memora valoarea 25 în locaţia singurului
element conţinut.
Numele unei variabile începe cu o literă şi este urmată de o serie de litere, numere sau
underscor-uri. Numărul maxim de caractere recunoscut într-un nume este de 31 de caractere.
Matlab face distincţia între litere mici şi mari = case sensitive: A şi a nu sunt aceleaşi variabile.
Pentru a vedea valorile asignate fiecarei variabile trebuie doar introdus numele variabilei.
Numerele
Reprezentarea numerelor în Malab se face in baza zece, cu opţiunea de punct zecimal şi semn
negativ sau pozitiv. În notaţia ştiinţifică se foloseşte litera e pentru a specifica puterea lui zece.
Numerele imaginare folosesc literele i sau j ca sufixe. Mai jos sunt prezentate câteva din
numerele corect reprezentate:
3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i
Toate numerele sunt memorate intern folosind o reprezentare specificată de standardul IEEE în
virgulă mobilă. Numerele rerezentate în virgulă mobilă au o precizie finită de 16 digiţi zecimali şi un
domeniu de reprezentare cuprins între 10-308 şi 10308.
Operatori
Matlab foloseşte operatorii aritmetici clasici:
+ adunare
- scădere
* inmulţire
/ împărţire
\ împărţire la stînga
^ ridicare la putere
‘ transpusa complex conjugate
() specifică o evaluare a expresiei
Funcţii
Matlab conţine un număr de funcţii matematice standard: abs, sqrt, exp, şi sin şi unu număr de funcţii
avansate ca şi funcţia Bassel sau gama. Dacă se aplică rădăcină pătrată unui număr negativ Matlab nu va
returna o eroare ci va calcula rezultatul complex. O listă completă a funcţiilor matematice elementare se
găseşte scriind:
help elfun
Pentru o listă a matricilor şi a funcţiilor matematice ceva mai avansate se tastează:
help specfun
help elmat
Câteva funcţii, ca sqrt şi sin sunt funcţii [Link] funcţii sunt parte din mediul Matlab, sunt
calculate foarte rapid dar detaliile (algoritmul de calcul) de implementare nu sunt accesibile
utilizatorului. Alte funcţii, ca şi gamma sau sinh, sunt implementate (este descris algoritmul de calcul)
prin intermediul unui fişier M. Astefel că există funcţii cărora li se poate accesa (modifica) codul de
implementarea a algoritmului iar altora nu.
Unele dintre funcţii generează valori unor constante:
pi 3.14159265…
i unitea imaginară,
j la fel ca i
eps precizia la reprezentarea în virgulă mobilă, ε = 2-52
realmin cel mai mic număr reprezentat în virgulă mobilă, 2-1022
realmax cel mai mare număr reprezentat în virgulă mobilă, (2-ε)21023
inf infinit
NaN Not-a-number, nu este un număr.
Valoarea infinit se obţine la împărţirea unui număr diferit de zero la zero sau la evaluarea unui număr
mai mare decât realmax.
NaN este generat atunci cănd se evaluează o expresie de tipul 0/0 sau inf – inf.
Deoarece numele variabilelor exemplificate nu este rezevată acestora li se poate redefini orice altă
valoare:
eps = 1.e-6
Valoarea originală se poate reseta prin:
clear eps
Exemple de expresii
Mai jos sunt prezentate câteva expresii şi rezultatele lor:
rho = (1+sqrt(5))/2
rho =
1.6180
a = abs(3+4i)
a=
5
z = sqrt(besselk(4/3,rho-i))
z=
0.3730+ 0.3214i
huge = exp(log(realmax))
huge =
1.7977e+308
toobig = pi*huge
toobig =
Inf
Matrici
Vor fi explicitate modurile de definire a matricilor:
- Funcţii de generare a matricilor
- Funcţii de încărcare
- Fişiere M
- Concatenarea
- Ştergerea de rânduri sau coloane
Funcţii de generare a matricilor
zeros toate elementele matricei sunt egale cu 0
ones toate elementele matricei sunt egale cu 1
rand valori aleatoare uniform distribuite
randn valori aleatoare nornal distribuite (medie 0 si dispersie 1)
Câteva expresii
Z = zeros(2,4)
Z=
0000
0000
F = 5*ones(3,3)
F=
555
555
555
N = fix(10*rand(1,10))
N=
9 2 6 4 8 7 4 0 8 4
R = randn(4,4)
R=
0.6353 0.0860 -0.3210 -1.2316
-0.6014 -2.0046 1.2366 1.0556
0.5512 -0.4931 -0.6313 -0.1132
-1.0998 0.4620 -2.3252 0.3792
Funcţii de încărcare
Funcţia de încărcare citeşte fişierele ce conţin matricile