You are on page 1of 19

INTRODUCERE

- pachet de programe de calcul numeric dedicat domeniilor


tiinifice i tehnice.
- Elementul principal este matricea fie c are elemente reale
fie complexe; scalarii sunt vazui tot ca matrice de 1:1

- MATLAB
Instruciuni utile
vol 1
OpenBooklet
padre_cosmin

FUNCII DE INTERES GENERAL:


matlabrc fiier general pentru lansarea MATLAB conine
cile de acces la fiierele de luzcru precum i setrile
parametrilor de lucru pentru mediul de programare MATLAB
exit, quit comenzi de ieire din MATLAB
help functie_cautata citete primul comentariu din fiierul
functie_cautata.m i l afieaz,dac funcia este intern
mediului MATLAB afieaz comentariile rezervate pentru ea
what afieaz fiierele .m, .mat i .mex din directorul curent
type fisier.m listeaz fiierul .m menionat
lookfor argument returneaz numele fuierelor care au n
prima linie a HELPului(linia H1) cuvinetele precicate ca
argument
which fiier sau funcie MATLAB- returneaz calea n care
este locaizat un fiier sau o funcie MATLAB
path returneaz caile cu care lucreaz MATLAB(cile n
care sunt cutate fiierele apelate
who listeaz variabilele curente din memorie
whos listeaz variabilele curente, dimensiunile lor, precum
i tipul(reale sau complexe)
exist variabila verific dac variabila exist n memorie
% acesta este un comentariu
clc - terge ce este afiat pe consola

clear terge variabilele din mediul de lucru

AJUTOR
- cu comanda help se pot obine informaii despre anumite
funcii i instruciuni matlab sau definite de utilizator
>> help subiect %afieaz informaii despre o funcie sau un
director
>>help functie %afieaz prima linie comentat din fiierul
funcie.m
- funcia what returneaz informaii referitoare la fiierele .m,
.mat, .mex din directorul curent
>> what general %afiseaz fiierelor din subirectorul general
- funcia which returneaz calea n care se gsete fiierul
specificat ca argument:
>> which fisier.m %cauta calea unde se gaseste fisierul
- funcia lookfor listeaz toate numele de fiiere din toi
directorii care au n prima linie a helpului cuvintele menionate
ca argument
>>lookfor cuvinte_cheie
AFIAREA CONINUTULUI UNUI DIRECTOR:
>> type fiier %afieaz coninutul fiierului
- funcia crede c extensia fiierului este .m, dac fiierul are
alt extensie, aceasta trebuie precizat

CI DE CUTARE:
- la tastarea unui cuvnt cuvant_cheie n consol, matlab
face urmtoarele cutri:
1) caut variabila cu numele cuvnt_cheie n memorie
2) caut funcia cu numele cuvnt_cheie n memorie
3) caut n directorul curent de pe disc fiierul cu numele
cuvnt_cheie.m
4) caut n directoarele specificate n path fiierul cu numele
cuvant_cheie.m
>> parh %afieaz cilor de cutare curente ale Matlabului
Lista cilor de cutare este setat n fiierele startup.m sau
matlabrc.m
>> p = path %returneaz n variabila p calea curent de
cutare
>> path(p) %schimb calea curent de cutare n cea
memorat n variabila p
>> path ( path, cale_noua) %adaug o nou cale de cutare
la cele deja memorate n variabila path ex:
>> path( path , 'C:\....' )
INFORMAII DESPRE VARIABILELE DINTR-UN
FIIER
Matlab reine variabilele create n timpul rulrii
>> who %listeaz numele variabilelor din spaiul de lucru
>> whos %listeaz numele variabilelor din spaiul de lucru i
afieaz i informaii suplimentare
>> exist('nume_variabila') %verific existena variabilei a
crui nume i-a fost dat ca parametru i returneaz:
0 dac variabila nu exist
1 dac variabila exist n spaiul de lucru
2 dac nume_variabil este un fiier .m n cile matlab
3 dac nume_variabila este un fiier .mex n cile matlab
4 dac nume_variabil este o funcie Simulink
5 dac nume_variabil este o construcie intern matlab

LUCRUL CU DIRECTOARELE I FIIERELE


SISTEMULUI DE OPERARE
>> cd %returneaz directorul curent
>> cd director_fiu % face un director fiu ca director curent
>> cd .. %face directorul parinte director curent
>> cd \ %face directorul rdcin directorul curent
>> cd . %referin la directorul curent, nu se ntmpl nimic
>> cd cale % exemplu cale = 'C:\Matlab\work' mut directorul
curent n calea specificat
>> dir %listeaz coninutul directorului curent
>> delete director_specificat %sterge directorul specificat de
pe disc
>> ! comanda_DOS %execut comand DOS din consola
MATLAB
>> ! program.exe %spune sistemului de operare sa porneasc
execuia unui program extern, ce afieaz programul poate fi
vzut n consola matlab(dac programul este unul de consola
fr grafic sau ferestre windows)
>> diary fisier %salveaz sesiunea de lucru fr partea grafic
ntr-un fiier text n format ASCII. Dac fiierul exist deja
sesiunea de lucru se anexeaz la sfritul acestuia
>> diary off %suspend nregistrarea
>> diary on %reia nregistrarea de comenzi din sesiunea de
lucru
FUNCII ASOCIATE FERESTREI CONSOL MATLAB
>> clc %sterge fereastra de comenzi
>> home %mut cursorul n poziia iniial(prima linie, prima
coloan)
format %seteaz formatul de afiare a datelor
echo (on sau off) %permite sau nu afiarea liniilor de program
n timpul executrii acestora
more(nr) %funcie pentru controlul numrului de linii afiate pe
monitor

FORMATAREA AFIERII NUMERELOR


Se pot stabili numrul de cifre afiate i spaiile dintre ele
Stabilirea opiunii de afiare se face prin:
>>format opiune
Opiune:
Opiune
rezumat
Exemplu
short
5 cifre
1.3333
long
15 cifre
1.333333333333333
short e
5 cifre + exp
1.3333E+000
long e
15cifre+exp
1.3333333333333E+000
hex
hexazecimal
3FF555555555555555
plus
plus blanc minus
+bank
doua zecimale
124.23
rat
exprimare raionala 102/53
AFIAREA EVOLUIEI EXECUIEI UNUI FIIER .M
Dac liniile de cod din fiierul .m se termin cu [ ; ] (punct i
virgul) atunci rezultatul lor nu apare in consol, dac lsm
liniile neterminate n ; atunci rezultatul liniei de cod este afiat
consola matlab n timpul rulrii
echo on plasat la nceput spune matlabului s afieze rezultatul
liniilor de cod, ceea ce face n mod implicit,
echo off spune matlabului s nu afieze rezultatele intermediare
are liniilor de cod n timpul rulrii fiierului .m

FUNCII DE CONTROL, AFIARE...


disp(matrice) %afieaz coninutul unei matrici
clear(variabil sau funcie) %terge variabila sau funcia din
memorie
pack %compacteaz datele din memorie
size(matrice) %returneaz dimensiunea unei matrici
[nr_linii, nr_coloane] = size(matrice)
length(vector) %returneaz dimensiunea unui vector
lungime_vector = length(vector)
disp('acesta e un mesaj') %afieaz text
>> variabila %se afieaz valoarea variabilei numai introducnd
numele ei n consol, variabila poate fi scalar, vector , matrice
casesen off %trece n mod case unsensitive
casesen on %trece n mod case sensitive
VARIABILE SPECIALE
ans memoreaz rezultatul unui calcul atunci cnd expresiei nu i
s-a dat un nume
eps reine eroarea relativ pentru calcule n virgul mobil
eps = 2.2204e-016
pi = 3.14159265358
i = 1 = j

>> a = sqrt(-1) %definete o variabil asemntoare i, j


inf reprezint plus infinit n aritmetica IEEE, e rezultatul
operaiei 1.0/0.0
NaN reprezint Not A Number n IEEE, rezultatul operaiei
0.0/0.0
>>nargin funcie %returneaz numrul argumentelor deintrare
ce trebuie introduse pentru apearea unei funcii
>> nargout functie %returneaz numrul argumentelor de ieire
ale funciei
flops %returneaz numrul de operaii n virgul mobil
efectuate de calculator
computer reine date despre calculator
realmax cea mai mare valoare real care poate fi folosit n
calcule
realmin cea mai mic valoare care poate fi folosit n calcule

>> ieieee %returneaz 1 dac calculatorul lucreaz cu aritmetica


IEEE
version, ver funcii pentru determinarea versiunii MATLAB
IMPORTAREA I EXPORTAREA FIIERELOR DE
DATE
load ncarc variabilele dintr-un fiier de date de pe disc
save salveaz variabilele ntr-un fiier de date de pe disc
>> nume_fisier format_date %ncrcarea unui fiier de date
nume_fisier numele asociat fiierului care se dorete a fi
ncrcat
format_date formatul ASCII sau BINAR din acel fiier
>> load %incarc date din matlab.mat
>> load nume_fisier %ncarc date din fiier n format binar cu
extensia .mat extensie
>> load nume_fiier.extensie mat %ncarc datele din fiier n
format binar cu extensie mat
>> load nume_fiier ascii %ncarc datele din fiier n format
ascii, fr extensie
>> load nume_fisier.extesie ascii %ncrcarea datelor din fiier
n format ascii cu extensie
datele ncrcate trebuie s fie tablouri complete
dup ncrcare datele se regsesc n memoria
calcualtorului cu numele pe care l-a avut fiierul de date
>> save nume_fisier nume_variabile format_date %salveaz
variabilele
>> save %salveaz toate variabilele din spaiul de lucru n
format binar n matlab.mat
>> save nume_fisier %salveaz n format binar toate variabilele
din spaiul de lucru n nume_fiier
>> save nume_fisier A B C %salveaz n format binar n
fisierul nume_fisier variabilele A, B i C din mediul de lucru
>> save nume_fisier.ext A B C-ascii %salveaz n format ascii
cu 8 digii n nume_fisier.ext
>> save nume_fiier.ext A B C ascii double tabs %salveaz
n format ascii 16 digii variabilele cu separare prin tab

VARIABILE SCALARI VECTORI MATRICE


Scalarii sunt matrice de (1x1), vectorii sunt matrice cu o linie
(1xn) sau cu o coloan (nx1)
Accesul la elementul unui vector se face: V(i) = expresie
Accesul la elementul unei matrice se face: M(i, j) = expresie
DEFINIREA unui SCALAR
>> a = 1234.43 %am definit un scalar
DEFINIREA unui VECTOR:
>> V = [1 2 3] %am definit un vector linie
>> V = [1, 2, 3] %am definit tot un vector linie
>> V = [1; 2; 3] %am definit un vector coloan
Generarea vectorilor cu pas (liniar sau logaritmic)
>> V = [val_start : pas : val_stop] %genereaz un vector ale
crui elemente pornesc de la valoarea val_start pn la
valoarea val_stop cu saltul pas
- merge i V = val_start : pas : val_stop
- nr de elemente al vectorului:
val _ max val _ min
lungime =
1
pas

- dac pas > 0 atunci trebuie ca val_min < val_max


- dac pas < 0 atunci trebuie ca val_min > val_max
- dac omitem pasul din declaraie atunci matlab consider
pas = 1
Dac tim limitele ntre care vrem ca vectorul s ia valori i
numrul de elemente echidistante pe care vrem s-l aib
vectorul
>>V = linspace(val_min, val_max, nr_elemente)
pas =

val _ max val _ min


nr _ elemente 1

Generarea cu pas logaritmic:


>> V = logspace(val_min, val_max, nr_elemente)

DEFINIREA unei MATRICI


>> M = [1 2 3; 2 3 4] %am definit o matrice cu dou linii i 3
coloane o mai puteam defini i cu: M = [1, 2, 3; 2, 3, 4] sau
M = [1 2 3
2 3 4] %cat timp nu ai nchis paranteza ptrat matlabul
ateapt introducerea de date dei ai apsat Enter
Reguli la declararea prin introducerea efectiv:
- elementele unei linii trebuie separate prin blanc sau virgule
- liniile se separ prin semnul ;
- elementele unei matrice sunt cuprinse ntre paranteze [ ]
! dac ncercm s atribuim o valoare unui element n afara
dimensiunii matricei, matricea este mrit ca dimensiune
iar elementele neasignate sunt ncrcate cu 0
V = [1 2 3] , dac facem V(5) = 9 atunci V devine:
[1 2 3 0 9]
Matricele se autodimensioneaz n timpul rulrii
-- dac avem un scalar >>A = 2, l putem transforma in vector
prin ex. >>A(2) = 3 . A devine vectorul [2 3]
-- dac avem un vector >> V = [1 2 3] l putem transforma ntr-o
matrice prin ex. >>V(2, 2) = 5. V devine [ 1 2 3; 0 5 0],
elementele nealocate sunt ncrcate cu 0
>> M = [ ] %am definit o matrice goal
>> M = zeros(nr_linii, nr_coloane) %genereaz o matrice de
dimensiuni specificate plin de 0(zero)
>> M = zeros(nr) %genereaz p matrice ptratic de dimensiune
nr plin de 0(zero)
>> M = ones(nr_linii, nr_coloane) %genereaz o matrice de
dimensiuni specificate plin de 1(unu)
>> M = ones(nr) %am definit o matrice ptratic de dimensiune
nr plin de 1
>> M = eye(nr_linii, nr_coloane) %genereaz o matrice
identitate de dimensiuni specificate elementele de pe prima
diagonal sunt 1
>> M = eye(nr) %genereaz o matrice unitate de dimensiune
nr, elementele de pe diagonala principal sunt 1

>> M = rand(nr) %genereaz o matrice ptratic plin cu


numere aleatoare cu distribuie uniform
>> M = randn(nr) %genereaz o matrice ptratic plin cu
numere aleatoare cu distribuie normal
>> [X, Y] = meshgrid(x, y)
>> [X, Y] = meshgrid(x)
Meshgrid returneaz n tablourile X i Y perechile de coordonate
ale tuturor punctelor din domeniul definit de vectorii x i y

ALTE FUNCII IMPORTANTE:


>> a = length(V) %a primete lungimea vectorului, nr. de
elemente
>> [m, n] = size(M) %m primete nr. de linii iar n nr. de
coloane ale matricei M
>> r = isempty(M) %isempty returneaz 1 dac M este matrice
goal, M=[ ], 0 n caz contrar
ATRIBUIREA UNEI EXPRESII PE MAI MULTE
RNDURI UNEI VARIABILE
>> A = 1 + 2 + 3 + ...
4 + 5 +6 % ... spune matlabului c expresia se ntinde pe mai
multe rnduri

ALTE MODATITAI DE DEFINIRE A VECTORILOR I


MATRICELOR
1) presupunem c avem un fiier date.m cu text ascii
organizat ca o matrice rectangular ce conine:
1 2
3 4
>> A = date.m % A devine [1 2; 3 4]
2) concatenarea a dou matrice
A1=[1 2; 3 4]
A2=[5 6; 7 8]
>> A = [A1; A2]
atunci:
1
3
A _ devine =
5

2
4
6

3) extragerea unei matrice dintr-o matrice mai mare


>> B=A(2:3, :)
3 4
B=

5 6

IRURI DE CARACTERE
irurile de caractere se scriu ntre ' '
sir = 'Ana are mere' %am atribuit variabilei sir irul de caractere
Ana are mere
OPERATORI MATLAB
+
adunare
scdere
*
nmulire
/
mprire
la dreapta
\
mprire
la stnga
^
la putere
Aritmetica IEEE permite folosirea a 16 digii semnificativi i un
interval 10-308 -:- 10+307

SCRIPTURI I FIIERE FUNCIE


Scripturile sunt fiiere ASCII salvate cu extensia .m ce cuprind
comenzi. La rularea unui script Matlab deschide fiierul i l
interpreteaz linie cu linie
Pentru a crea un fiier script sau funcie
apsm iconia New M-File i se va
deschide o fereastr de editare text in
care vom scrie instruciunile din script
sau antetul i corpul funciei
! Dup execuia complet a unui
fiier script variabilele cu care acesta
a operat rmn n zona de memorie.

param_ieire trebuie separai prin virgul i cuprini ntre


paranteze drepte
param_intrare trebuie separai prin virgul i cuprini ntre
paranteze rotunde
APELAREA UNEI FUNCTII:
>> [v1,v2,..., vn] = functie(p1, p2, ...,pm)

INTRRI I IEIRI ATEPTAREA PRIMIRII UNEI


VALORI DE LA UTILIZATOR-ETC.
disp('Ana Are mere') %funcia disp apelat dintr-o funcie
afieaz mesajul primit sau valoarea variabilei primite
v = 1234.5
disp(v) %afieaz valoarea reinut n variabila v
k = waitforbuttonpress %returneaz n k valoarea 1 dac a fos
apsat o tast sau 0 dac a fost apsat un buton de mouse
var = input('Introduceti valoare pentru var: ') %pus ntr-un
fiier script sau funcie permite introducerea de valori de la
consol n timpul rulrii respectivului fiier .m

ELEMENTE DE PROGRAMARE STRUCTURAT


CONDIIONALA IF:
SIMPL
if conditie
instructiuni
end
Cu Clauz else:
if conditie
instructiuni
else
instructiuni
end
Cu clauz Else If
if conditie1
instructiuni
else if conditie2
instructiuni
else if conditie3
instructiuni
else
instructiuni
end

OPERATORI RELAIONALI:
Operatori
<
<=
>
>=
==
~=

Semnificatie
mai mic
mai mic sau egal
mai mare
mai mare sau egal
identic
diferit

OPERATORI LOGICI:
op logici
NU
SI
SAU

Simbol
~
&
|

Prioritate
1
2
3

Ex de folosire in condiionalele if
if (A<B) & (C ~= D)
instructiuni
end

Condiionala Switch Case

CICLUL FOR

variabila = expresie

for contor = val_initiala : pas : val_finala


instructiuni
end

switch variabila
case valoare1
instructiuni
case valoare 2
instructiuni
..............................
otherwise
instructiuni
end

val _ finala val _ initiala


n=
+1
pas

ex:

CICLUL WHILE:
while expresie
instructiuni
end

val = 3
switch val
case 1
disp('val = 1')
case 2
disp('val = 2')
case 3
disp('val = 3')
otherwise
disp('Nu stiu ce valoare are val')
end

Observaii:
1) dac omitem pasul, este considerat egal cu 1
2) dac i = var_vector, (ex. for i = [1 4 7]) ciclul se repet de
numrul de elemente al vectorului ori, n cazul acesta 3, iar
contorul rmne ncrcat cu ultima valoare din vector, n
cazul acesta 7
3) dac expresia este o matrice, indexul va avea la fiecare
iteraie valorile coninute n urmtoarea coloan a matricei
Bucla se execut de:

Observaii Adugri:
1) Folosim instruciunea break pentru a iei necondiionat
dintr-un ciclu
2) Folosim combinaia de taste Ctrl + C pentru a opri
execuia unui ciclu infinit
3) Instruciunea return determin ieirea din execuie a
funciei, scriptului
4) Instrucinea error(' mesaj ') afieaz mesajul primit ca
parametru dac a aprut o problem n timpul rulrii
scriptului, funciei
ex.: function test(x, y)
if nargin ~= 2
error(nr argumente insugicient)
end

FUNCII DE CONTROL LOGIC


exist(variabila sau functie) returneaz 0 dac nu exist, 1
dac exist ca variabil n spaiul de lucru, 2-ca fiier .m, 3-ca
fiier .mex, 4-ca funcie simulink, 5-ca funcie Matlab intern
any(x) returneaz 1 dac vectorul x are cel puin un element
diferit de 0, dac x este matrice, any opereaz pe coloane
returnnd un vector linie cu elemente 0 i 1 funcie de
prezena elementelor nenule n coloanele matricelor respective
all(matrice) verific dac toate elementele matricei respective
verific o condiie
if all(A <= 0) %verific dac toate elementele lui A sunt
negative sau 0
a=find(X) , [l,c]=find(X), [l, c, V] = find(X) returneaz
indicii elementelor diferite de 0, primul caz este pentru un
vector, al doilea pentru o matrice, a treia este tot pentru
matrice dar n vectorul V se returneaz elementele diferite de
0
Y=finite(X) Returneaz n matricea Y 1 pe poziiile n care n
X sunt numere finite i 0 n caz contrar
Y=isnan(X) Returneaz n matricea Y 1 pe poziiile n care n
X sunt valori NaN(0/0), 0 n caz contrar
Y=isinf(X) Returneaz n matricea Y1 pe poziiile n care n
X sunt valori inf, 0 in caz contrar
Y va avea aceeai dimensiune cu X
v=isempty(X) Testeaz dac X este matrice goal, X=[ ]
returnand 1 dac da, si 0 n caz contrar
Operaiile vectorizate se execut mai rapid, funciile
matlab pot face calcule si cu vectori, matrici
t=0:.01:10
t=0:.01:10
N=length(t)
Y=sin(t);
for i=1:N
plot(t, Y)
%aceasta este
y(i) = sin(t(i));
end
varianta %optimizata
plot(t, y)

OPETAII ARITMETICE
Operaia
Scalari
Matrice
tablou
Adunare
+
+
+ sau .+
Scdere
- sau .nmulire
*
*
.*
mprire la
\
\
.\
-1
stnga
a\b <=>a *b
mprire la
/
/
./
dreapta
Ridicare la
^
^
.^
putere
Transpunere `
`
.`
Observaii:
1) mprirea la stnga e mprirea mpritorului la
demprit
2) Dac rezultatul operaiei depete realmax(10308)
matlab d ca rezultat inf
3) Dac rezultatul operaiei este mai mic dect
realmin(10-308) matlab d ca rezultat NaN
4) Operaiile cu tablouri:
M3 = M1 .* M2 nmulete element cu element elementele
din matricea M1 cu elementele corespunztoare din M2 i le
pune n poziiile corespunztoare din M3
a11 * b11 a12 * b12 a11 a12 b11 b12
a 21 * b21 a 22 * b22 = a 21 a 22 *b21 b22

Asemntor sunt definii si operatorii ./ .\ .^, (.^ ridic


fiecare element din prima matrice la puterea dat de
elementul corespunztor din cea de-a doua matrice
a11^ b11 a12^ b12 a11 a12 b11 b12
a 21^ b21 a 22^ b22 = a 21 a 22^ b21 b22

n cazul echivalentelor pentru tablouri ale operaiilor + i


-, exist i .+ i .- dar rezultatul este identic.
Operaia Z=Y.' liniile tabloului Y devin coloanele
tabloului transpus Z. Un tablou de mxn devine unul nxm.

OPERAII ARIMTMETICECU VECTORI


Produsul scalar
__

__

Ps = A* B = a (i ) * b(i )
i =1

n Matlab se calculeaz cu instruciunea:


Ps = sum(A .* B)

C (i, j ) = A(i, j ) * B(i, j )

Unghiul dintre vectori:


Dac
__

__

__

__

A = a X i + aY j + a Z z
__

__

__

__

B = b X i + bY j + bZ z
atunci
__

__

A* B
cos( A, B) =
=
| A|*| B |
__ __

a X b X + aY bY + a Z c Z
2
X

a + aY2 + a Z2 * b X2 + bY2 + bZ2

n matlab se calculeaz cu instruciunile:


ab = sum(a .* b); %produsul scalar
mod_a = norm(a)
mod_b = norm(b)
alfa = acos(ab/(mod_a*mod_b))*180/pi
Produsul vectorial
__

__

A si B doi vectori de dim 3


__

__

__

Pv = A x B = a X
bX

aY
bY

aZ
bZ

__

__

__

OPERAII ARITMETICE CU MATRICE:


Adunarea matricelor:
C=A+B
C(i, j) = A(i, j) + B(i, j)
Scderea este asemntoare.
nmulirea matricelor:
C= A*B

__ __

| C |=| A | * | B | * sin( A, B)

n matlab se calculeaz cu instruciunea:


Pv = A '* B
Putem obine produsul scalar din cel vectorial prin:
Ps = sum(diag(Pv))

mprirea la dreapta a matricelor:


C = A/B = A * B-1
mprirea la stnga a matricelor:
C = A\B = A-1 *B
Ridicarea la putere a matricelor:
B = A^n=A*A*...*A(n factori) dac n>0
B = A^n=inv(A)*inv(A)*...*inv(A)(n factori) dac n<0
Transpunerea matricelor:
B = A'
B(i, j) = A(j, i) , dac A are elemente reale
B(i,j)=conj(A(j,i))=real(A(j,i))-i*imag(A(j,i))
FUNCII IMPORTANTE DE CALCUL CU MATRICE
I VECTORI
norm(A) calculeaz norma euclidian a vectorului sau
matricei A
diag(A) creaz un vector coloan cu elementele de pe
diagonala principal a matricei A, dac A este vector,
genereaz o matrice ptratic de dimensiunea vectorului ce
are pe diagonala principal elementele vectorului iar in rest 0

FUNCII MATEMATICE IMPORTANTE:


Aproximri:
>> ceil(nr) returneaz un numr ntreg, rotunjit celmai
apropiat ntreg spre plus infinit
>> fix(nr) returneaz un numr ntreg, rotunjit la celmai
apropiat ntreg spre zero
>> floor(nr) returneaz un numr ntreg, rotunjit la cel mai
apropiat ntreg spre minus infinit
>> round(nr) returneaz un numr ntreg, rotunjit la cel mai
apropiat ntreg
>> rem(a, b) returneaz restul mpririi lui a la b
>> sign(nr)

1, daca _ nr > 0

sign(nr ) = 0, daca _ nr = 0
1, daca _ nr < 0

>> y = rats(x) transform un numr cu virgul ntr-o fracie


rats(1.25) = 5/4
>> y = rats(x, 's') determin afiarea rezultatului simbolic y
ntr-o matrice ir
rat determin aproximarea unui numr cu fracii continue
forme de apel: y=rat(x) y=rat(x, tol) [a,b]=rat(x)
[a,b]=rat(x,tol)
x numrul care trebuie aproximat cu fracii continue
tol tolerana acceptat, implicit tol=10-6
y aproximarea lui x
a, b numrtorul i numitorul fraciei care aproximeaz pe x
cu tolerana tol
Divizori i multipli comuni
>> gcd(a, b) returneaz cel mai mare divizor comun al celor
dou numere
>> lcm(a,b) returneaz cel mai mic multiplu comun al celor
dou numere

Funcii pentru Numere Complexe:


>> abs(z) returneaz modulul numrului complex z
>> angle(z) returneaz faza argumentului
>> unwrap(z) returneaz partea real i imaginar a unui
numr complex exprimat n form polar
unwrap(exp(i*pi/4)) = 0.7071 + 0.7071i
exp(i * pi / 4) = e

>> conj(z) calculeaz conjugata complex a argumentului


>> imag(z) returneaz partea imaginar a numrului z
>> real(z) returneaz partea real a numrului z
Funciile putere, radical, logaritm, exponenial
>> a ^ b ridic pe a la puterea b
>> pow2(a) returneaz 2a
>> pow2(a,b) returneaz a*2b
>> exp(a) calculeaz ea
dac a este complex, a = x + yi , e a = e X (cos( y ) + i sin( y ))
>> log(a) calculeaz ln(a)
>> log2(a) calculeaz log2a
>> log10(a) calculeaz log10a
>> N=nextpow2(a) determin puterea N a numrului 2 care
majoreaz modulul argumentului
>> sqrt(a) returneaz radical din a
Funcia modul:
>> abs(a) returneaz modul din a
Funcii trigonometrice
>> sin(a) returneaz sinus de a, a este n radiani
>> cos(a) returneaz cosinus de a, a este in radiani
>> tan(a) returneaz tangent de a, a este n radiani
>> cot(a) returneaz cotangent de a, a este radiani
>> sec(a) calculeaz secanta de a
>> csc(a) calculeaz cosecanta de a

Funcii trigonometrice inverse:


>> asin(a) calculeaz arcsinusul argumentului, unghiul n
radiani pentru care sinus de acel unghi este egal cu a
>> acos(a) calculeaz arccosinusul argumentului
>> atan(a) calculeaz arctangenta argumentului
>> atan2(a) calculeaz arctangenta unui argument complex
>> acot(a) calculeaz arccotangenta argumentului
>> asec(a) calculeaz arcsecanta argumentului
>> acsc(a) calculeaz arccosecanta argumentului
Funcii hiperbolice:
>> sinh(a) returneaz sinus hiberbolic al argumentului
>> cosh(a) returneaz cosinus hiperbolic al argumentului
>> tanh(a) returneaz tangenta hiperbolic a argumentului
>> coth(a) returneaz cotangenta hiperbolic a argumentului
>> sech(a) returneaz secanta hiperbolic a argumentului
>> csch(a) returneaz cosecanta hiperbolic a argumentului
Funcii hiperbolice inverse:
>> asinh(a) returneaz arcsinusul hiperbolic al
argumentului
>> acosh(a) returneaz arccosinusul hiperbolic al
argumentului
>> atanh(a) returneaz arctangenta hiperbolic a
argumentului
>> acoth(a) returneaz arccotangenta hiperbolic a
argumentului
>> asech(a) returneaz arcsecanta hiperbolic a
argumentului
>> acsch(a) returneaz arccosecanta hiperbolic a
argumentului

MATRICE SPECIALE
>> A=compan(p) p este un vector ai crui elemente sunt
coeficienii unui polinom scrii n ordine descresctoare a
puterii, compan(p) calcuelaz comanionul matriceal
corespunztor.
P( x) = p(1) x n + p(2) x n 1 + ... + p(n) x1 + p(n + 1)
p = [ p(1) p(2) ... p(n + 1)]
p(2) / p (1) p(3) / p (1) ... p(n + 1) / p(1)

A = compan( p) =

>> eig(compan(p)) returneaz rdcinile polinomului


Matricea diagonal
>> A=diag(v) genereaz matricea A avnd pe diagonala
principal elementele vectorului v
>> A=diag(v, k) dac k=0 genereaz A avnd elementele de
pe diagonala principal elementele vectorului v
k>0, indic diagonala de deasupra diagonalei principale care
este populat cu elementele vectorului v
k<0, indic diagonala de sub diagonala principal care este
populat cu elementele vectorului v
restul de elemente din matrice sunt 0(zero)
Matricea Hadamard
>> Hn=hadamard(n) genereaz matricea hadamard de
ordin n matricea ptratic care are toatelementele -1 sau 1
aezate ntr-o astfel de succesiune c lina j e identic cu
coloana j.
Matricea nu este ortogonal dar se poate ortogonaliza prin
[ Horth.n] =

[ Hn]

Matricea Hankel
>> H=hankel(c) c este un vector n funcie de care matlab
genereaz matricea hankel
dac c=[3 2 1]

Matricea Pascal
Triunghiul Pascal conine coeficienii binomiali ai
descompunerii (a+b)n

3 2 1
H = hankel (c) = 2 1 0
1 0 0

Triunghiul Pascal cu coeficienii descompunerii unui binom


de ord 4:

>> H= hankel(c,l) dac primete doi vectori de dimensiuni


m, respectiv n, matriea H va avea dimensiunile mxn
dac c=[10 5 6] l=[1 2 3 4]

10 5 6 2
H = hankel (c, l ) = 5 6 2 3
6 2 3 4

4 1

Matricea Hilbert
>> H=hilb(grad)
H (i, j ) =

1
i + j 1

>>IH=invhilb(n) genereaz inversa matricei hilbert de


gradul n
Tensorul Kroneker
>> K=kron(X,Y) calculeaz produsul tensorului Kroneker
dintre matricele X i Y, o matrice format din toate produsele
posibile ntre elementele lui X i Y
dac X este de dimensiunile m x n i
Y este de dimensiunile l x p atunci
K este de dimensiunile ml x np
Ptratul magic
>> A=magic(n) genereaz ptratul magic de ordin n, o
matrice n x n format din ntregi de la 1 la n2 care are suma
elementelor de pe fiecare linie, coloan, diagonal sau antidiagonal principal, egal
! trebuie ca n >= 3

(a + b) n = a n + C n1 a n1b + C n2 a n 2 b 2 + ... + C nn 1ab n 1 + b n

1
1

2
3

1
2

3
4

1
3

1
4

>> pascal(5) genereaz


1 1

1 2

1 3

10 15 elementele din partea stng a atidiagonalei

1 4 10 20 35
1 5 15 35 70

principale sunt elementele triunghiului lui Pascal


>> P1=abs(pascal(5,1)) conine elementele triunghiului lui
pascal ordonate pe linie
>> P2=abs(pascal(5,2)) conine elementele triunghiului lui
pascal ordonate pe coloan n partea triunghiular din colul
drept
Matricea Toeplitz
>> T = toeplitz(v), dac v = [1 2 3 4]
1
2
T =
3

2 3 4
1 2 3
2 1 2

3 2 1

Matricea Vandermode
>> V=vander(vector), dac vector=[1 2 3 4]
13
3
2
V = 3
3
3
4

12
22
32
42

1
2
3
4

1
1

Matricea Wilkinson
>> W=wilkinson(n)
| n 2i 1 |
,i =

W (i, j ) = 1, i = j + 1
0, in _ rest

2 1 0
1 1 1

W (ordin _ 5) = 0 1 0

0 0 1
0 0 0

0 0
0 0
1 0

1 1
1 2

CALCULE CU MATRICE
Accesarea unui element al matricei se face prin indici
A(i, j) ex.: A(3,3) = A(1,3)+A(2,3)
In cazul vectorilor fie coloan, fie linie, matlab i d
seama c tabloul are doar o singur dimensiune i putem
accesa elementele lui printr-un singur indice
v=[1 4 5] , v(2)=4
w=[5; 6; 8], w(2)=6
Estragerea unui bloc(submatrice) dintr-o matrice:
>> C=M(2:4, 3: 5) % folosind operatorul : putem extrage
pri dintr-o matrice
1
3

M = 2

2
7

2 5 7 2
4
6 4 2 5
3
7 3 0 1 => C =
6

1 6 3 7

9
8 9 3 2

2 5
0 1
3 7

3 2

>> CC=M(2:4, :) %extrage elementele dintre liniile 2 i 4


inclusiv, toate coloanele
>> v = A(:) %transform matricea M ntr-un vector
1
2
1 2

daca _ A =

v
=

3
3 4

4

j:i:k selecteaz elementele [j, j+i, j+2i,...,k] ale unui vector,


sau liniile sau coloanele dac ncercm s izolm elemente
dintr-o matrice
Extragerea submatricelor prin vectori cu elemente 0-1
>> B=A(v, :) %dac v este un vector plin doar de elemente 0 i 1
de lungime m iar A o matrice de m x n
linia de cod returneaz n matricea B toate elementele din liniile
matricei A pentru care elementul corespunztor ca poziie din
vectorul v este 1
>> B=A(:, v)%elinim coloanele...

Redimensionarea unei marice:


>> B=reshape(A, m, n) %genereaz o matrice B cu elemente
din A dar de dimensiune m x n, dac m sau n e mai mic dect
dimensiunea corespunztoare a le lui A, elementele n plus sunt
0, dac m sau n e mai mic dect dimensiunea corespunztoare a
lui A, se pierd elemente
Rotirea matricei n jurul unei coloane sau linii:
>> B=fliplr(A) %B este A pivotat n jurul ultimei coloane
>> C=flipud(A) %C este A pivotat n jurul ultimei linii

Matrice diagonale i triangulare:


>> M=diag(v) creaz o matrice diagonal cu elementele
vectorului v pe diagonala principal
>> M=diag(v, k) creaz o matrice diagonal avnd elementele
vectorului v pe diagonala indicat de k, k=0, elementele lui v se
plaseaz pe diagonala principal, k<0 elementele vectorului v
sunt plasate pe diagonala a k sub diagonala principal, k>0
elementele lui v sunt plasate pe diagonala a k deasupra diagonalei
principale

1 2 3
daca _ A = 4 5 6
7 8 9
3 2 1
7 8 9

B = 6 5 4 __ iar __ C = 4 5 6
9 8 7
7 8 9

>>M=tril(M1) creeaz o matrice inferior triunghiular


fcnd 0 unele elemente ale matricei argument
>> M=triu(M2) - creeaz o matrice superior triunghiular
fcnd 0 unele elemente ale matricei argument

Rotirea matricei cu multipli de 90 de grade n jurul unui


element:
>> B=rot90(A)
>> B=rot90(A, k)% k este multiplu de 90 de grade cu care se
rotete matricea

>> d = det(M) %calculeaz determinantul matricei M


>> N = inv(M) %calculeaz inversa matricei M
>> N = M'
%pune n N matricea M transpus
>> r = rank(M) %calculeaz rangul matricei M
>> r = rank(M, tol) %returneaz numrul de valori singulare ale
lui M mai, mari dect parametrul tol(toleran)
>> u = trace(M) %calculeaz urma matricei M, suma
elementelor de pe diagonala principal

1
A = 4
7
dac
3
B = 2
1

2 3
5 6 atunci
8 9
6 9
5 8
4 7

k poate fi i negativ, n acest caz

matricea se rotete invers trigonometric

ANALIZ MATRICEAL

Norme:
Vectori:
>> norm(V) %echiv. norm(V, 2) returneaz:
N

=2

= 2 V1 + V2 + ... + V N

Condiionarea :
>> c = cond(M) %returneaz raportul dintre cea mai mare i cea
mai mic valoare singular a acesteia
>> c = rcond(M) %returneaz o valoare aproximativ cu 1.0
dac M este bine condiionat i aproximativ cu 0.0 dac M este
slab condiionat
>> c = condest(M) %estimarea celui mai mic numr de
condiionare

k =1

>> norm(V, p) %returneaz:


N

= P Vk

= P V1

+ V2

+ ... + V N

k =1

>> norm(V)/sqrt(N) %returneaz valoarea rdcinii medii


ptratice RMS
RMS =

1
N

2
k

V1 + V2 + ... + V N

k =1

>> norm(V, inf) %returneaz valoarea maxim n modul:


V

= max Vk

1 k N

>> norm(V, -inf) %returneaz valoarea minim n modul


V

= min Vk

1 k N

Matrice:
>> n = norm(M) %returneaz cea mai mare valoare singular a
lui M, se mai apeleaz i cu n = norm(M, 2)
M

= M * M = max
( M )

>> n = norm(M, 1) %returneaz norma 1 a lui M, cea mai mare

sum a elementelor dup coloan M 1 = max M jk


1 j N
k =1

>> norm(M, inf) %returneaz norma infinit a lui M, cea mai


mare sum a elementelor de pe linie M

N
= max M jk
1 k N
j =1

>> norm(M, 'fro') %returneaz norma Frobenius


N

M
j ,k

Descompunerea i factorizarea matricelor:


Valori proprii:
Avem ecuaia Ax = x ,
A matrice ptratic de ordin n
x vector coloan de ordin n
scalar

2
jk

M 11 + M 22 + ... + M nn

Vectorii x care satisfac condiia ecuaiei se numesc vectori


proprii.
Valorile scalare care satisfac ecuaia se numesc valori proprii.
>> V = eig(A) %returneaz un vector care conine valorile
proprii ale lui A
>> [V,D] = eig(A) %returneaz o matrice D care conine valorile
proprii ale matricei A i o matrice D ale crei coloane sunt
vectorii proprii corespunztori valorilor proprii a.. A*V=V*D
>> [V,D] = eig(A, 'nobalance') %returneaz valorile i vectorii
proprii fr a executa n prealabil o balansare, dac matricea
conine elemente mici, comparabile cu erorile de rotunjire,
balansarea le scaleaz, fcndu-le la fel de semnificative cu
celelalte elemente ale matricei originale ducnd la vectori proprii
incoreci. De aceea folosim prametru nobalance.
>> [V,D] = eig(A, B) %returneaz o matrice diagonal D ce
conine valorile proprii generaizate i o matrice V ale crei
coloane sunt vectorii proprii corespunztori

Calculul valorilor singulare:


>> [U, S,V] = svd(M) %returneaz o matrice diagonal S cu
aceleai dimensiuni ca M, avnd elementele diagonale
nenegative( care sunt i valori singulare) n ordine descresctoare
i matricele U i S care satisfac: M = U*S*V
Factorizarea Cholesky:
Este metoda direct de rezolvare a sistemului de ecuaii liniare de
forma Ax = b
A matrice pozitiv definit <=> A=Atraspus i det(A)>0 <=>
exist R matrice superior triunghiular, nesingular care satisface
relaia: A=RTR
T

>> R = chol(A) %calculeaz R astfel nct R *R=A


>>[R, p] = chol(A) %p este un scalar de test, = 0 dac A pozitiv
definit i un ntreg pozitiv dac A nu e pozitiv definit.
Factorizarea LU(lower-upper):
Reprezint descompunerea unei matrice ptratice n dou
matrice, una inferior triunghiular cu elementele diagonale egale
cu 1, una superior triunghiular.
>> [L, U] = lu(M) %returneaz o matrice superior triunghiular
U i o matrice inferior triunghiular permutat L, a.. M=L*U
Factorizarea QR:
Reprezint descompunerea unei matrice ntr-un produs dintr-o
matrice ortonormat Q i o matrice superior triunghiular R.
>> [Q,R] = qr(M) %returneaz matricea triunghiular superioar
R de aceeai dimensiune cu M i matricea Q astfel nct M=Q*R
>> [Q,R,E] = qr(M) % returneaz matricea permutat E a
metricei superior triunghiular R cu elemente diagonale
descresctoare i matricea Q a.. M*E=Q*R

Pseudoinversa unei matrice:


Se utilizeaz pentru calcularea soluiei de ecuaiei n sensul celor
mai mici ptrate
>> N=pinv(M) %N are aceleai dimensiuni ca M

OPERAII PE IRURI DE CARACTERE:


>> sir = 'MATLAB' %am definit o variabil ir de caractere
adic se creeaz un vector sir ce conine codurile ASCII ale
caracterelor dintre apostroafe
>> a = abs('sir_de_caractere') %transform fiecare caracter din
irul primit ca parametru n codul ASCII, a e un vector care va
avea dimensiune lungimea irului de caractere i ca valori
valorile ASCII ale caracterelor din sir_de_caractere
>> a = abs('MATLAB')
ans=
a=[77 65 84 76 65 66]
>>s = setstr(vect) %pune n s valorile din vectorul vect
convertite n echivalentele ASCII. Dac o valoare din vect e mai
mare de 255, ea este convertit modulo 256, dac caracterul nu
este printabil va aprea
>> isstr(t) %returneaz 1 pentru modul text i 0 pentru modul
cod numeric ASCII
>> sir = ['sir1', 'sir2', ..., 'sirn'] %concateneaz irurile i le
pune n sir
>> sir = str2mat(sir1, sir2, ..., sirn) %formeaz matrice din
irurile de caractere primite ca parametri
>> blanks(nr) %deplaseaz cursorul cu nr poziii, se include de
obicei n funcia disp pentru formatarea ieirii:
disp([blanks(4), 'sir ce caractere'])
>> deblank(sir) %elimin spaiile albe i orice caracter NULL
de la sfritul unui ir de caractere

>> eval('sir_de_caractere') %evalueaz expresia sir de


caractere interpretnd-o ca o comand matlab
>> [y1, y2, ..., ym] = feval('nume_functie', param1, param2, ...,
paramn)
echivalent:
>> [y1, y2, ..., ym] = funcie(param1,..., paramn)
>>strcmp(sir1, sir2) %compar cele dou iruri, returneaz 1
dac cele dou iruri sunt egale, 0 n caz contrar. !Funcia e casesensitive.
>>findstr(sir, subsir) %returneaz poziia de nceput a lui subsir
n sir
>>sir = upper(sir) %convertete caracterele din sir n majuscule
>>sir = lower(sir) %convertete caracterele din sir n minuscule
>>M2 = isletter(M1) %pune n matricea M2 1 pe poziiile unde
n M1 gsete caractere ale Albafetului i 0 n rest
>>s = num2str(nr) %convertete un numr ntr-un ir de
caractere
>>s = int2str(nr) %convertete numere ntregi n ir de caractere
>> nr = str2num(sir) %convertete un ir de caractere n numr,
irul de caractere trebuie sa conin doar cifre, semne + - .(punct
zecimal) , i sau j pentru numere complexe
Funcia sprintf('format',A)
format: -d.p tip_format
'-' este opional i specific alinierea la stnga(lipsa nseamn
alinierea la dreapta)
d numrul minim de caractere
p numrul de cmpuri pentru partea zecimal
tip_format: e(notaie exponenial), f(notaie n virgul fix),
g(formate scurte ale lui f sau e)
Format poate mai conine i caractere escape:
\n \t \b \r(return car) \\ \f(form feed) \'

Conversia irurilor n formate numerice:


>> dec2hex(nr) %returneaz nr primit ca valoare zecimal n
hexazecimal
>> hex2dec(nr) %returneaz nr primit ca valoare hexazecimal
n valoare decimal

Bibliografie:
1) Matlab, Ed. Teora, Marin Ghinea, Virgiliu Fireeanu
2) http://www.cyclismo.org/tutorial/matlab/
3) http://www.mathworks.com/help/techdoc/

You might also like