Sunteți pe pagina 1din 10

MATLAB

INTRODUCERE N LIMBAJUL MATLAB (Wikipedia)


Matlab este un limbaj de nalt performan pentru proiectarea asistat de calculator.
Matlab este n acelai timp un limbaj de programare i un sistem de dezvlotare care integreaz
calculul, vizualizarea i programarea ntr-un mediu uor de utilizat, problemele i soluiile acestor
probleme fiind exprimate ntr-un limbaj matematic accesibil.
Numele Matlab provine de la MATrix LABoratory i a fost dezvoltat de firma The
MathWorks, Inc. din SUA. Aceast abreviere a fost creat la sfritul anilor 70 de ctre Cleve
Moler, preedintele departamentului de informatic al Universitii din New Mexico. Iniial creat
pentru a permite accesul studenilor si la librriilr Linpack i Eispack, fr necesitatea de a
studia limbajul Fortran. Jack Little, de formaie inginer, a intrat n contact cu Matlab n 1983, n
timpul unei vizite a lui Moler la Universitatea Stanford. Recunoscnd imediat potenialul su
comercial, a nceput o colaborare cu Cleve Moler i Steve Bengert, rescriindu-l n limbajul C.
Matlab este un sistem deschis care a cunoscut o evoluie spectaculoas n mediul
universitar, unde constituie pachetul standard pentru cursurile introductive i avansate de
programare, matematic, inginerie i tiine. Este utilizat n urmtoarele domenii: analiz
matematic i numeric, dezvoltarea algoritmilor, modelare, simulare i inginerie.
Elementul de baz al limbajului Matlab este tabloul, matricea, ceea ce permite rezolvarea
problemelor de calcul numeric, n special cele care necesit prelucrarea de vectori sau matrici.
Matlab are 5 pri principale: limbajul de programare, mediul de lucru, mediul grafic,
biblioteca de funcii matematice, interfaa de aplicaii program.
Matlab permite dezoltare unei familii de apicaii sub forma toolbox-urilor. Acestea permit
nvarea i aplicarea tehnologiilor specializate din diverse domenii. Sunt disponibile toolbox-urile
pentru domenii cum ar fi: procesarea numeric a semnalelor, sisteme de conducere automat,
reele neurale, logic fuzzy, wavelet, simulare(Simulink), indentificare.

1
.

2
INTRODUCERE N FUNCIILE MATLAB (Florin, 2010)
Biblioteca de funcii matematic a Matlab-ului reprezint o colecie complex de algoritmi
de calcul pronind de la funcii elementare (sinus, cosinus, tangent etc.) pn la funcii
sofisticate (inversarea de matrici, valori proprii, funcii Bessel, trasnformri integrale etc.).
Funciile matematice sunt organizate n 8 categorii: funcii pentru operaii cu matrici, funcii
elementare, funcii speciale, funcii pentru operii cu elemente algebrice, funcii pentru analiza
datelor, funcii pentru interpolarea i operarea cu polinoame, funcii pentru integrarea ecuaiilor
i sistemelor de ecuaii difereniale, funcii pentru operaii cu matrici rare. Interfaa de aplicaii
program a Matlab-ului este o bibliotec care permite scierea de programa n limbajul C care
interacioneaz cu Matlab-ul. Include faciliti pentru apelarea rutinelor din Matlab, apelarea
Matlab-ului.
n Matlab funciile pot fi: funcii Matlab predefinite (de bibliotec) sau funcii utilizator,
scrise de programator. Funciile definite i salvate sub acelai identificator pot fi apelate din orice
alt duncie sau din fereastra comenzi Command Window. Funcia care are acelai identificator
cu al fiierului .m n care este salvat, controleaz toate celelate funcii definite n fiierul
respectiv. Este permis recursivitatea, numrul de niveluri de recursivitate putnd fi limitat.

DEFINIREA FUNCIILOR (Paul, 2010)


Funciile se defines n fiiere cu extensia .m, numite fiiere funcie. Sintaxa de definie a
unei funcii este:
Function [outf1, outfs,, outfk]= identificator_funcie (inf1,
inf2,, infn) Corp funcie

Numele de apel al funciei este indentificator_funcie. Fiierul .m asociat funciei


trebuie s aib acelai identificator cu al funciei. Salvarea pe un suport extern de memorie se
face cu numele identificator_funcie.m. ntr-un fiier .m pot exista mai multe definiii de
funcii care sunt locale acestui fiier. Funcia care are acelaii identificator cu al fiierului .m
este o funcie global Matlab i poate fi apelat din orice alt fiier sau din fereastra Command
Window. Numele fiierului .m devine o comand Matlab, de aici i caracteristica de sistem
deschis al mediului Matlab.
Variabilele inf1, inf2,, infn sunt parametrii de intrare ai funciei.
Variabilele outf1, outf2,, otfn sunt returnate de funcie i sunt paramterii ieire ai
funciei.
Parametrii de intrare i de ieire din definiia funciei se numesc paramtreii formali.
Linia Function [outf1, outf2,, outfk]= identificator_funcie (inf1, inf2,, infn) este cunoscut
sub numele de semntur a funciei. Oricrei funcie i se asociaz automat doi paramtri implicii
de intrare:
nargin- numrul de paramatri de intrare.
nargout- numrul de parametri de ieire.
Lista parametrilor formali de intrare poate fi vid, la fel i lista parametrilor de ieire poate s fie
vid. Se obin respectiv sintaxele de definiie:
Function [outf1,outf2,, outfn]=
indentificator_funcie. Function
identificator_funcie (inf1,inf2,, infn).
Function identificator_funcie.

3
Figure 1

APELUL FUNCIILOR (Paul, 2010)


n funcie de modul de definire, o funcie se apeleaz cu una din sintaxele:
[outa1, outa2,, outak]= identificator_funcie (ina1,
ina2,..., inan). [outa1, outa2,, outak]=
n care: identificator_funcie. identificator_funcie(ina11, ina2,,
ina1,
inan); identificator_funcie
ina2,, inan- sunt parametrii actuali de intrare.
outa1, outa2,, outak- sunt parametrii actuali de ieire ai funciei.
Dac exist un singur parametru formal de ieire, n definiia funciei parantezele drepte nu mai
sunt necesare, apelul avnd una dintre sintaxele:
outa= identificator_funcie (ina1, ina2,, inan);
outa=identificator_funcie;
identificator_funcie.
Parametrii actuali se nlocuiesc la apel paramtreii formali. Parametrii actuali de intrare pot fi
expresii, variabile, funcii. ntre paramterii formalidin definiia unei funcii i cei actuali din apelul
unei funcii trebuie s existe o coresponden biunivoc ntre poziiile parametrilor n listele de
parametrii i ntre tipurile valorilor parametrilor. O funcie poate fi apelat fie dintr-un fiier
funcie .m, fie din fereastra Command Window. Execuia unei funcii se termin n mod normal
la sfritul funciei. Pentru a termina execuia funciei naintea ultimei instruciuni se utilizeaz
intruciunea return. Apelurile funciilor pot fi operanzi n diverse expresii.

TIPURI DE FUNCII (Florin, 2010)


FUNCII PENTRU OPERAII CU VECTORI I MATRICI
All(v)= returneaz valoarea 1 dac vectorul v are toate componentele nenule i
valoarea 0 dac cel puin una dintre componentele vectorului este nul.

4
All(B)= returneaz un vector. Fiecare component j a vectorului returnat are
valoarea 1 dac toate elementele de pe coloana j a matricei B sunt nenule sau
valoarea 0 dac cel puin un element de pe coloana j este nul.
Any(v)= returneaz valoarea 1 dac vectorul v are componente nenule i valoarea 0
dac toate componentele vectorului sunt nule.
Any(B)= returneaz un vector. Fiecare component j a vectorului returnat are
valoarea 1 dac exist elemente nenule pe coloana j a matricei B sau valoarea 0
dac toate elementele de pe coloana j sunt nule.
Length(v)= returneaz lungimea vectorului v, numrul de componente.
Length(A)= returneaz dimensiunea matricei ptratice A.
Length(B)= returneaz numrul de coloane din matricea B.
Sum(v)= returneaz suma elementelor vectorului v.
Sum(A)= returneaz un vector cu elementele= suma elementelor matricei a pe
fiecare coloan.
Sum(A,2)= returneaz un vector coloan cu elemntele= suma elementelor matricei
A de pe fiecare linie.
Min(v) sau max(v)= returneaz valoarea minim sau maxim a componentelor
vectorului v.
Min(B) sau max(B)= returneaz valoarea minim sau maxim a componentelor
coloanelor.
Prod(v)= returneaz produsul componentelor vectorului v.
Prod(B), prod(B,1), prod(B,2)= returneaz produsul componentelor coloanelor
matricei.
Size(B)= returneaz dimensiunea matricei B (linii i coloane).
Disp(B)= afieaz matricea B.
Det(A)= returneaz determinantul matricei B.
Inv(A)= returneaz inversa matricei A.
Islogic(s)= returneaz 1 dac s este de tip Boolean i 0 dac s nu e de tip Boolean.
Isempty(B)= returneaz 1 dac matricea B este vid, altfel returneaz 0.
Isnumeric(B)= returneaz 1 dac toate valorile matricei sunt numerice, altfel
returneaz 0.
Isequal(A,B)= returneaz 1 dac A=B, altfel returneaz 0.
Diag(B)= returneaz diagonala principal matricei B.
Cat(dim, v1, v2)= concateneaz tablourile v1 i v2 i genereaz n funcie de
valoarea parametrului dim un tablou corespunztor.

FUNCII PENTRU GENERARE DE VECTORI I MATRICI


Linspace(a,b,n)= Genereaz un vector cu elementele a:r:b, ratia = (b-a)/n.
Logspace(a,b,n)= Genereaz un vector cu elementele a:r:b, r=ratia = (b-a)/r.
Hgrid(a,b,r)= Genereaz o matrice cu elementele a:r:b, ratia = r(b-a)/r.
Repmat(a,m,n)= Genereaz o matrice cu m linii i n coloane, elementele sunt marticea a.
Rand(n)= Genereaz o matrice patratica cu n linii, elementele apartin intervalului (0,1).
Randn(n)= Genereaz o matrice patratic cu n linii, repartizate normal.
Cumsum(A)= Genereaz o matrice patratic cu n linii, elem a(i,j)=sum(a(1:i,j)).
Prodsum(A)= Genereaz o matrice patratic cu n linii, elem a(i,j)=prod(a(1:i,j)).
Min(A,[],1)= Genereaz o matrice patratic cu n linii, elem a(i,j)=prod(a(1:i,j)).
Sort(v)= Genereaz un vector, elementele sale fiind sortate crescator.
Sort(A), sort(A,ascend) sau sort(A,descend)= Genereaz o matrice, elementele sale
fiind sortate cresctor/descresctor pe fiecare coloan .
5
Rank(A)= Genereaz rangul unei matrici.
Poly(A)= Genereaz un vector, cu elementele= coeficienii polinomului caracteristic.
Eig(A)= Genereaz 2 matrici: [vector propriu, valori proprii].
Diag(v)= Genereaz o matrice ptratica, cu diagonala principal=v.
Rank(A)= Genereaz un vector coloana cu elementele= diagonala principal.

FUNCII PENTRU CITIRE I SCRIERE


Clc= Clear Command Window.
Who= Afiarea variabile din workspace.
Whos= Afiarea detaliat a variabilelor din workspace.
Disp(var)= Afiarea variabilei.
Input(B)= Citete B.
Num2str(v)= numeric to string= afiarea vectorului sau matricei. (Florin, 2010)

Exemplul1 : Vom defini funcia sd cu semntura y=sd(n) care primete la intrare un numr
natural nenul n i afieaz divizorii numrului n i returneaz suma divizorilor numrului n.
Function y=sd(n)
y=0;
for i=1:n
if rem(n,i)==0
mesaj1=[Numrul ,num2str(i), este divizor al numrului ,num2str(n)];
disp(mesaj1);
y=y+i;
end
end
mesaj2=[Suma divizorilor numrului ,num2str(n), este egal cu ,num2str(y)];
disp(mesaj2);
end.

VARIABILELE GLOBALE (Paul, 2010)


Funciile pot comunica ntre ele prin intermediul parametrilor. O alt metod de
comunicare ntre funcii este metoda variabilelor globale. Instruciunea global se utilizeaz
pentru a defini variabilele globale. Dac n mai multe funcii i n spaiul de baz se declar o
variabil global, atunci ele utilizeaz aceeai variabli. La atribuirea unei valori acestei variablile
n orice funcie, valoarea este accesibil tuturor funciilor ce au declarat variabila ca global.
Sintaxa de Global v1 v2 definire a variabilelor globale este: n care v1, v2,, vn
sunt identificatorii vn de variabile.
Metoda2:
Function prim(n)
Global y
Sd(n);
If y==n+1
Mesaj1=[Numrul ,num2str(n), este numr prim.];
Disp(mesaj1);
else
Mesaj2=[Numrul ,num2str(n), este numr compus.]
Disp(mesaj2);
End.

FUNCIILE ANONIME (Paul, 2010)

6
@(inf1, inf2,, infn) expresie
O funcie se numete anonim dac nu are identificator, nu are paramterii de ieire i are
corpul format dintr-o singur expresie. O funcie anonim se definete cu sintaxa: n care inf1,
inf2,, infn sunt parametrii formali de intrare, iar expresie este corpul funciei.
Apelul funciei se face prin intermediul unui handle la aceast funcie, definit prin:
h=@(inf1, inf2,, infn) expresie, i apoi apelul h(ina1, ina2,, inan), n care ina1, ina2,, inan
sunt parametrii actuali de apel ai funciei.

CONTROLUL NUMRULUI DE ARGUMENTE DIN APEL (Florin, 2010)


Utilizatorul Matlab poate s controleze n orice moment al execuiei unui program numrul
argumentelor de apel ale unei funcii (argument de intrare/ ieire).
La lansarea n execuie a unei funcii, Matlab creeazp automat dou variabile globale,
nargin i nargout, care memoreaz n orice moment numrul argumentelor de intrare i
respectiv numrul argumentelor de ieire ale funciei. Controlul numrului de argumente de apel
se poate face citind valorile acestora dou variabile. Utilizatorul poate doar s citeasc aceste
valori.
Funciile Matlab pot fi apelate cu un numr variabil de argumente de intrare/ ieire. n
corpul unei funcii, nargin memoreaz numrul argumentelor de intrare folosite n timpul unui
viitoar apel al funciei, iar nargout memoreaz numrul argumentelor de ieire folosite n
timpul unui viitor apel al funciei. Dac numrul argumentelor (de intrare sau ieire) de apel este
mai mare dect numrul argumentelor din definiia funciei atunci Matlab trateaz acest fapt cu
mesajul de eroare: Error using f. Too many input arguments.

Exemplu: Vom defini o funcie cu semntura val=f(a,b,c), n care:


Val=-inf, dac funcia va fii apelat fr argumente de intrare.
Val=a, dac funcia va fii apelat cu un singur argument de intrare: a.
Val=a+b, dac funcia va fii apelat cu dou argumente de intrare: a,b.
Val=a*b+a*c+b*c, dac funcia va fii apelat cu trei argumente de intrare: a,b,c.
Function val=f(a,b,c)
n=nargin;
If n==3
Mesaj1=[num2str(n),' argumente de intrare.'];
disp(mesaj1);
val=a*b+b*c+a*c;
end
if n==2
Mesaj2=[num2str(n),' argumente de intrare.'];
Disp(mesaj2);
val=a+b;
end
if n==1
Mesaj3=[num2str(n),' argumente de intrare.'];
disp(mesaj3);
val=a;
end

EXERCIII (Florin, 2010)


Exerciiul1: Calculai suma a dou numere utiliznd o funcie.
Function suma(a,b)
7
S=a+b;
Mesaj=[Suma numerelor este: ,num2str(S)];
Disp(Mesaj);
End.

Exerciiul2: Fie irul de numere (xn)nN definit prin x1=1, x2=0 i xn=xn-1-xn-2-1 pentru orice n>2. S
se scrie o funcie Matlab care primete la intrare un numr natural n>2 i furnizeaz la ieire
matricea A=(aij), i=1,2,,n; j=1,2,,n, n care aij=min{ai,aj}.
Function generarematrice
n=input(Tastai n, n>2: );
x=[]; A=[];
x(1)=1; x(2)=0;
for i=3:n
x(i)=x(i-1)-x(i-2)-1;
end
for i=1:n
for j=1:n
A(i,j)=max(x(i),x(j));
End
End
Mesaj=[x= (,num2str(x),)];
Disp(Mesaj);
Disp(A);
End

8
Cuprins
INTRODUCERE N LIMBAJUL MATLAB (Wikipedia)............................................................................ 1
INTRODUCERE N FUNCIILE MATLAB (Florin, 2010).......................................................................2
DEFINIREA FUNCIILOR (Paul, 2010)............................................................................................ 2
APELUL FUNCIILOR (Paul, 2010)................................................................................................. 3
TIPURI DE FUNCII (Florin, 2010)................................................................................................. 3
FUNCII PENTRU OPERAII CU VECTORI I MATRICI..................................................................3
FUNCII PENTRU GENERARE DE VECTORI I MATRICI...............................................................4
FUNCII PENTRU CITIRE I SCRIERE.......................................................................................... 5
VARIABILELE GLOBALE (Paul, 2010)............................................................................................. 5
FUNCIILE ANONIME (Paul, 2010)............................................................................................. 5
CONTROLUL NUMRULUI DE ARGUMENTE DIN APEL (Florin, 2010).............................................6
EXERCIII (Florin, 2010).................................................................................................................. 6
Cuprins............................................................................................................................................ 8
Bibliografie...................................................................................................................................... 9

9
Bibliografie
Florin, P. (2010). Informatic Aplicat Laborator. Constana: Academia Naval.
Paul, V. (2010). Informatic Aplicat Curs. Constana: Academia Naval.
Wikipedia.

10

S-ar putea să vă placă și