Sunteți pe pagina 1din 8

MATERIALE PENTRU ELECTRONICA Laborator 3

Laborator 3
MATLAB. Program pentru calcule tehnice
Notiuni fundamentale. Partea a doua.
Operatii aritmetice, logice si instructiuni pentru control

3.1.Utilizarea operatiilor aritmetice si logice

Exista un numar de operatii de baza care sunt utilizate la generarea expresiilor matematice.
Operatiile sunt de 2 categorii si anume operatii aritmetice si operatii logice.

3.1.1.Operatii aritmetice
Operatiile aritmetice sunt de 2 categorii si anume operatii cu matrici si vectori si operatii cu
grupuri. Operatiile efectuate asupra matricilor si vectorilor sunt adunarea, scaderea, înmultirea,
ridicarea la o putere si transpunerea, aceste operatii sunt specificate prin operatorii +, -, *, ^ si
respectiv ‘ pentru transpunere. Matricele patrate pot sa fie inversate cu comanda inv(A). În plus fata
de aceste operatii mai exista A/B si A\B care specifica înmultirea matricii A cu inversa matricii
patrate B la dreapta si repectiv înmultirea matricii A cu inversa matricii B la stânga. Trebuie ca
dimensiunile matricilor sa fie corespunzatoare pentru a face anumite operatii si anume matricile
trebuie sa aiba aceleasi dimensiuni în cazul adunarii si scaderii, sa fie de dimensiuni
corespunzatoare în cazul multiplicarii, operatiei de multiplicare la dreapta cu inversare (/), operatiei
de multiplicare la stânga cu inversare (\) si respectiv trebuie sa fie patrate în cazul ridicarii la putere
si inversarii.

Exemplu de calcul 3.1 Se introduce in CW urmatoarele:


>> a=[1 2;3 4],b=[3 1;7 8], c=[2 4] (Enter)
>> d=a+b, e=c*a, f=a^2, c=c’ (Enter)
>> h=a\b, k=a/b (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

Se va face o verificare manuala a operatiilor efectuate mai sus pentru o mai buna întelegere
modului în care aceste operatii se efectueaza. În cazul operatiilor de înmultire cu inversa sunt 2
opreatii distincte care dau rezuultate diferite si anume:
A\B = inv(A)*B si respectiv A/B= A*inv(B)
Se remarca faptul ca la rezolvarea unei ecuatii liniare de matrici de tipul A*X=B, pentru a
afla X se pot folosi cele 2 operatii de divizare care dau rezultate diferite si anume:
X=A\B = inv(A)*B si respectiv X=A/B = A* inv(B)
Elementele unei matrici pot sa fie adunate, scazute sau multiplicate cu un scalar.

Exemplu de calcul 3.2 Se introduce in CW urmatoarele:


>> E=[7 2 3,4 3 6,8 1 5]; F=[1 4 2, 6 7 5, 1 9 1];
>> G= E-F, H=E+F, J=H+4, Q=E*F, R=4Q;
>> E,F,G,H,J,Q,R
Rezultatul afisat se trece pe foaia cu date experimentale

A doua categorie de operatii sunt operatiile pe grupuri sau multimi (array) care sunt operatii
efectuate element cu element. Deoarece adunarea si scadera matricilor sunt operatii care se
efectueaza element cu element va rezulta ca adunarea si scadera pe multimi este la fel cu adunarea
si scadera matricilor. În acest caz asemenea operatii sunt specificate de operatorii + si -.
Multiplicarea, împartirea, transpozitia si ridicarea la putere a unor multimi sunt specificate de
operatorii dinainte dar care au în fata un punct .* ,. /, . ‘, . ^. Aceste operatii pe multimi care se fac
element cu element se mai numesc operatii cu punct. Se remarca faptul ca doua grupuri utilizate în
1
Operatii aritmetice, logice si instructiuni pentru control
operatii matematice de tip multime trebuie sa aiba aceiasi dimensiune. Se poate verifica lungimea
unui vector sau a unei matrici (adica numarul de elemente) cu comanda length(A) unde A este
variabila asociata grupului respectiv.

Exemplu de calcul 3.3. Se introduce in CW urmatoarele:


>>m=a.*b, n=b./a, o=b.^a (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale

Se va face o verificare manuala a operatiilor efectuate mai sus pentru o mai buna întelegere
modului în care aceste operatii se efectueaza. Exista o exceptie legata de dimensiunile necesare
pentru matrici si grupuri atunci când se aduna se scade se multiplica sau se împarte matricea cu o
constanta. În aceste cazuri constanta este adunata, scazuta, înmultita, respectiv împartita cu fiecare
element al matricii sau ariei respective.

Exemplu de calcul 3.4. Se introduce în CW urmatoarele:


>> p=C+2, q=c-2, r=2.*c, s=c./2, t=2*c, u=c/2 (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

Se remarca faptul ca înmultirea si împartirea unei matrici este o operatie de grup atunci când
aceste operatii au loc cu o constanta.

3.1.2. Operatii logice

Operatiile logice “si”, “sau” si “negatie” sunt specificate de catre operatorii &, I -. Acesti
operatori pot sa fie folositi în conjuctie cu operatorii:
 < mai mic
 <= mai mic sau egal
 > mai mare
 >= mai mare sau egal
 == egal
 ~= diferit (neegal)
pentru a se obtine grupuri de “zero” si “unu” (grupuri 0-1). Valoarea unu corespunde cu elementele
pentru care operatia logica este îndeplinita.

Exemplu de calcul 3.5. Se introduce în CW urmatoarele:


>> a=[ 1 3 2;4 5 6], b=a>2&a<=5 (Enter)
>> c=[1 5 3 4 7 8], d=c>4 (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

3.2.Functii matematice

3.2.1. Functii uzuale

Programul MATLAB contine numeroase functii matematice. Toate aceste functii


matematice se pot aplica unor grupuri (array) iar operatiile se efectueaza element cu element. În
urma efectuarii operatiei respective se va afisa pe ecran un grup de aceleasi dimensiuni cu
elementele modificate în mod corespunzator functiei aplicate fiecarui element. În lectiile anterioare
au fost definte si utilizate asemenea functii si anume:
- sqrt - extragerea raaacinii patrate,
- real - partea reala a unui numar complex,
- imag - partea imaginara a unui numar complex,
- abs - modulul unui numar complex,
2
MATERIALE PENTRU ELECTRONICA Laborator 3

- angle- unghiul de defazaj al unui numar complex în radiani.

Daca un numar este real atunci functia abs determina afisarea modului acelui numar. Alte
functii matematice mai des folosite în analiza semnalelor si sistemelor si în electronica sunt:
- exp- functia exponentiala în baza e,
- log- logaritm în baza e,
- log 10- logaritm în baza 10,
- sin- functia sinus,
- cos- functia cosinus,
- asin- functia arcsin,
- acos- functia arcos,
- atan- functia arctangenta,
- atan2- functia arctangenta pe patru cadrane,
- round- aproximare le cea mai apropiata valoare întrega,
- floor- aproximare spre – infinit,
- ceil- aproximare spre + infinit.
Functiile trigonometrice se aplica la unghiurile exprimate în radiani. Se reamintesc functiile
uzuale clasificate pe domenii:
sin cos tan sinh cosh tanh...
asin acos atan asinh acosh.. atanh....
exp log log 10 sqrt
fix floor ceil round mod rem sign
cart2sph cart2pol pol2cart sph2cart
factor isprime primes gcd lcm
nchoosek perms
besselj besselh... beta... erf... gamma..legendre
cross dot

Exemplu de calcul 3.6. Se introduce in CW urmatoarele :


>> nchoosek (30,4) % Calculeaza numarul de
% combinatii de N elemente luate câte k
>> perms ([1 2 3]) % Se arata toate permutatiile posibile ale vectorului
>> v1=[1 3 5],v2=[2 4 6] ;
>> cross (v1, v2) % Se face produsul vectorial a celor 2 vectori
>> dot (v1, v2) % Se face produsul scalar a celor 2 vectori
Rezultatul afisat se trece pe foaia cu date experimentale

3.2.2. Expresii matematice


Operatiile aritmetice, operatiile logice care genereaza grupuri 0-1 si functiile matematice pot
sa se combine pentru a forma expresii matematice complexe. Deseori aceste expresii iau forma unor
ecuatii, care pe de alta parte pot sa fie folosite în controlul fluxului de declaratii. Operatiile
matematice respecta regulile bine cunoscute din matematica. Numeroase expresii matematice
necesita folosirea parantezelor ca sa se obtina regula de calcul dorita.

Exemplu de calcul 3.7. Se introduce in CW urmatoarele:


>> t=0.1; x=2^t*sqrt(t)-sin(2*t)/3 (Enter)
>>y=2^(t*sqrt(t))-sin(2*t)/3 (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

Se poate evalua o expresie matematica în functie de un set de variabile independente prin


exprimarea variabilei independente ca un grup unidimensional (sau vector) si apoi prin utilizarea
operatiilor matematice referitoare la grupuri.
3
Operatii aritmetice, logice si instructiuni pentru control

Exemplu de calcul 3.8. Se introduce in CW urmatoarele:


>> f=0:2:4; w=2*pi*f; (Enter)
>> x=(3 –j*0.1*w)/(1.5+j*0.2*w) (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

O utilizare uzuala a generarii de grupuri de 0-1 în analiza semnalelor si sistemelor este


reprezentarea unui semnal prin modelul liniarizat pe portiuni pe baza unei expresii matematice.

Exemplu de calcul 3.9. Se introduce in CW urmatoarele:


>> t= -0.5:0.5:2.5; (Enter)
>> x=(t+1).*(t>=0&t<1)+2*(t>=1&t<=2) (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

Se utilizeaza simbolul .* pentru prima multiplicare deoarece se doreste ca operatia sa se


efectueze element cu element în cazul celor doua grupuri unidimensionale. Pentru a doua înmultire
se utilizeaza simbolul * deoarece reprezinta multiplicarea cu o constanta.

3.3. Instructiuni pentru controlul fluxului

Programul MATLAB are functii prin care se poate controla executarea repetitiva sau
selectiva a instructiunilor. Toate instructiunile de control a fluxului de declaratii trebuie sa fie
asociate cu instructiunea finala end.

3.3.1.Instructiunea for

Instructiunea for permite executarea aceluiasi grup de instructiuni în mod repetitiv de un


numar specificat de ori. Aceasta instructiune este echivalenta cu instructiunile FOR sau DO din
limbajele clasice de programare.
De exemplu daca se doreste evaluarea sumei:
3
x t    k  t 1.2 k
pentru 0<=t<=0.8 cu un interval de 0.2s iar apoi sa se tipareasca
k 1
rezultatele de poate utiliza urmatorul program:

Exemplu de calcul 3.10. Se introduce in CW urmatoarele:


>> t=0:0.2:0.8; (Enter)
>> x= seroz(size(t)); (Enter)
>> for k=1:3; (Enter)
x=x+sqrt(k)*t.^sqrt(1.2*k); (Enter)
end;
>> x (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

Instructiunea for poate fi îmbricata. Exemplu de editare a unei matrici cu instructiunea for

Exemplu de calcul 3.11. Se introduce in CW urmatoarele:


>> for m=1:3; (Enter)
for n=1:4; (Enter)
y(m,n)=m+n; (Enter)
end; (Enter)
end; (Enter)
>> y (Enter)
4
MATERIALE PENTRU ELECTRONICA Laborator 3

Rezultatul afisat se trece pe foaia cu date experimentale. Dimensiunea grupului y de 3x4


este aleasa mica pentru a putea fi tiparita într-un spatiu mic. Daca se creste dimensiunea grupului la
200x200 atunci timpul de executie poate sa ajunga la 8s. Timpul de executie poate sa fie redus la
aproximativ 4.3 s daca grupul este format înainte de a calcula valorile lui. Acest lucru poate fi
realizat prin folosirea functiei y=zeros(200, 200) înainte de instructiunea for. Timpul de executie a
unei instructiuni se poate masura cu instructiunea tic instrodusa înaintea functiei si respectiv
instructiunea toc introdusa dupa functia a carui timp de executie dorim sa fie masurat

3.3.2.Instructiunea while

Instructiunea while este similara instructiunii for cu deosebirea ca aceasta se executa


repetitiv de un numar nespecificat de ori. Executia instructiunii se opreste când expresia logica este
satisfacuta.

Exemplu de calcul 3.12. Se introduce in CW urmatoarele:


>> n=1; (Enter)
>> while 2*n<5000; n=2*n; end; (Enter)
>> n (Enter)
Rezultatul afisat se trece pe foaia cu date experimentale.

Se observa ca acesta instructiune calculeaza cea mai mare putere a lui 2 care este mai mica
decât 5000.

3.3.3. Instructiunea if
Instructiunea if permite executarea selectiva a unui set de instructiuni în functie de valoarea
unei expresii logice.

Exemplu de calcul 3.13. Se introduce in CW :


>> for k=1:4;
if k==1; x(k)=3*k;
elseif k==2|k==4; x(k)=k/2;
else; x(k)=2*k;
end;
end;
>> x
Rezultatul afisat se trece pe foaia cu date experimentale.

Instructiunile if pot sa fie îmbricate. De asemenea se pot utiliza variabile de tip sir de forma
adevarat 't' sau fals 'f' sau conditiile matematice == sau ~= în cadrul unor expresii logice care pot
sa controleze instructiunea if.

Exemplu de calcul 3.14. Se introduce în CW :


>> c='t'; n=2;
>> if c=='f'; c='false'; y=NaN; end;
>> d=0.1:0.1:0.4;
>> if c=='t';
if n==2; y=10*d(n);
else; y=0
end;
end;
>> c, y
Rezultatul afisat se trece pe foaia cu date experimentale.
5
Operatii aritmetice, logice si instructiuni pentru control
Se va repeta exercitiul precedent pentru c = 't' si n =,/ 2, .Se va testa exercitiul precedent în
cazul c = 'f' .

3.4. Alte functii si comenzi


Programul MATLAB are numeroase functii si comenzi disponibile. În cadrul lectiilor
anterioare s-au utilizat deja functiile roots, poly, si conv. Se vor prezenta în continuare câteva
functii uzuale utilizate în electronica si teoria semnalelor. Alte functii specifice se vor descrie numai
în momentul utilizarii lor. Se recomanda studierea cu atentie a helpului pentru a se putea utiliza
toate facilitatile programului MATLAB.

3.4.1. Functii numerice


 find(A) - Afiseaza un vector rând care contine indicii elementelor care nu sunt egale cu 0
dintr-un grup unidimensional de elemente. Aceasta functie se poate utiliza cu arii de 0 si 1 ca sa se
afle indicii elementelor care au alta valoare decât 0 sau 1.

Exemplu de calcul 3.15. Se introduce în CW :


>> a=[1 0 2 3 0 4]; b=find(a)
>> n=find(a>2)
Rezultatul afisat se trece pe foaia cu date experimentale.
 size(A,i) - Afiseaza numarul de rânduri din A daca i=1 sau numarul de coloane din A
daca i=2. Daca nu se specifica i se va afisa un vector rând care va contine numarul de rânduri si
numarul de coloane.
 zeros(m,n) - Returneaza o arie de dimensiunea (m x n) de zerouri. Se mai poate utiliza
zeros(size(A)) care returneaza o arie de zerouri de dimensiunea lui A.
 max(A) - Afiseaza cel mai mare element dintr-o arie unidimensionala iar
 max(max(A)) afiseaza cel mai mare element dintr-o arie bidimensionala.
 min(A) - La fel ca max(A) cu deosebirea ca afiseaza cele mai mici valori.
 mean(A) - Afiseaza valoarea medie a tuturor elementelor dintr-o arie unidimensionala.
Afiseaza un vector rând care contine valorile medii ale tuturor elementelor dintr-o coloana a unei
arii bidimensionale.
 meshgrid(A,1:n) - Returneaza o arie cu n rânduri la care fiecare rând este o arie
unidimensionala A.

Exemplu de calcul 3.16. Se introduce în CW :


>> d=-0.1:0.1:0.2; dm=meshgrid[d,1:3]
Rezultatul afisat se trece pe foaia cu date experimentale.

 sum(A) - Returneaza suma elementelor lui A daca A este o arie unidimensionala.


Returneaza un rând care contine suma elementelor de pe coloanele ariei bidimensionale A.

Exemplu de calcul 3.17. Se introduce în CW :
>> e=[1 2 3], es=sum(e), f=[4; 5; 6], fs=sum(f)
>> g=[1 2 3; 4 5 6], gs=sum(g)
Rezultatul afisat se trece pe foaia cu date experimentale.

Comanda sum se poate utiliza împreuna cu comanda meshgrid pentru a evalua suma unei
variabile independente pe un anumit domeniu de variatie. Se va considera urmatorul exemplu de
calcul pentru expresia matematica.
3
x t    k  t 1.2 k
pentru 0<=t<=0.8 cu un interval de 0.2
k 1

6
MATERIALE PENTRU ELECTRONICA Laborator 3

Exemplu de calcul 3.18. Se introduce în CW :


>> t=0:0.2:0.8; k=1:3; c=sqrt(k); n=sqrt(1.2*k);
>> tm=meshgrid(t,1:size(k,2));
>> cm=meshgrid(c,1:size(t,2)).';
>> nm=meshgrid(n,1:size(t,2)).';
>> x=sum(cm.*tm.^nm);
>> tm, cm, nm, x
Rezultatul afisat se trece pe foaia cu date experimentale.

Instructiunea meshgrid permite sa se genereze un grup de dimensiuni egale pe rânduri si


coloane având valoarea t ( se observa ca pentru a se obtine cm si nm este nevoie sa se faca operatia
de transpunere). Suma operatiilor aritmetice pe aceste arii pentru fiecare coloana este suma valorilor
dorite care corespund cu anumita valoare a lui t. Se observa ca s-a utilizat acelasi exemplu ca la
instructiunea for. Desi se utilizeaza mai multe instructiuni în exemplul de mai sus, timpul de
executie este mai mic în comparatie cu timpul necesar prin utilizarea instructiunii for. Diferenta
dintre timpii de executie nu este semnificativa în cazul în care se utiliuzeaza numei 3 valori de
însumare. Au fost utilizate numai 3 valori pentru a se putea afisa aria generata de meshgrid într-un
spatiu rezonabil.Daca se va calcula pentru 1000 de valori, timpul de executie este de aproximativ
1,2 s în comparatie cu timpul necesar prin utilizarea instructiunii for care poate sa ajunga la
aproximativ 7s.

3.4.2. Comenzi de memorare si salvare


Aceste comenzi sunt urmatoarele :
 diary filename - Salveaza continutul din Command Window, la fel ca si comanda diary
off, în fisierul filename din directorul MATLAB .
 save filename variables -Salveaza variabilele din spatiul de lucru în fisierul filename.mat
din directorul MATLAB .
 load filename - Încarca fisierul filename.mat din directorul MATLAB.

Spatiul de lucru (workspace) poate fi salvat sau încarcat din memorie cu 2 comenzi:
>> save % scrie toate variabilele din spatiul de lucru în fisierul matlab.mat si salveaza
fisierul
>> load % încarca în spatiul de lucru toate variabilele din fisierul matlab.mat

3.5.Exercitii propuse spre rezolvare


3.5.1.Sa se genereze un vector linie x cu urmatoarele elemente prin utilizarea comenzii cu
doua puncte (:)
- 2, 4, 6, 8.. 20,
- 10, 8, 6, 4, 2, 0, -2, -4,
- 1, ½, 1/3, ¼, 1/5,
- 0, ½, 2/3, ¾, 4/5

3.5.2. Se considera un vector t de lungime n. Sa se scrie expresiile MATLAB care executa


urmatoarele operatii matematice:
- ln(2+t+t2),
- et(1+cos(3t)),
- cos2 (t) + sin2 (t),
- tan-1(t),
- cot(t),
- sec2 (t) +cot(t) -1
3.5.3. Se considera vectorul linie x= [ 3 1 5 7 9 2 6]. Sa se explice ce reprezinta operatiile
urmatoare efectuate asupra acestui vector:
7
Operatii aritmetice, logice si instructiuni pentru control
- x(3), x(1:7), x(1:end), x(1:end-1), x(6:-2:1), x([1 6 2 1 1]), sum(x)

3.5.4. Se considera grupul A= [2 4 1; 6 7 2; 3 5 9]. Sa se scrie comenzile care fac


urmatoarele operatii:
- selecteaza primul rând din grupul A si denumeste acesta ca fiind vectorul x1,
- selecteaza ultimele doua rânduri din grupul A si denumeste acest nou grup ca fiind y,
- Calculeaza suma elementelor pe fiecare coloana,
- Calculeaza suma elementelor pe fiecare rând.

3.5.5. Se considera urmatorii vectori linie x=[1 5 2 8 9 0 1] si y=[5 2 2 6 0 0 2].


Se vor executa urmatoarele comenzi si se va explica ce face fiecare:
- x>y,
- y<x,
- x==y,
- x<=y,
- y>=x,
- xIy,
- x&y,
- x&(~y)
- (x>y)I(y<x),
- (x>y)&(y<x)

3.5.6.Se dau vectorii x=1:10 si y= [3 1 5 6 8 2 9 4 7 0]. Sa se execute si sa se interpreteze


rezultatul pentru urmatoarele comenzi:
- (x>3)&(x<8),
- x(x>5),
- y(x<=4),
- x((x<2)I(x>=8)),
- y((x<2)I(X>=8)),
- x(y<0)

3.5.7.Fie vectorul x=[3 15 9 12 -1 0 -12 9 6 1]. Sa se scrie comenzile care


executa urmatoarele:
- Seteaza la zero toate valorile pozitive ale vectorului x,
- Transforma toate valorile care sunt multiplu de 3 în 3,
- Înmulteste valorile lui x care sunt impare cu 5,
- Extrage valorile lui x care sunt mai mari ca 0 intr-un vector denumit y

3.5.8. Sa se creeze un vector x=randperm(35) si apoi sa se evalueze


urmatoarele functii utilizând numai indexarea logica:
- y(x)=2 if x<6
- z(x)= x-4 if 6<=x<=20,
- -w(x)=36-x if 20<=x<=35,

Bibliografie
1. Gordon E.Carlson, “MATLAB Tutorial”, Signal and Linear System
Analysis,1998
2. MATLAB, Getting Started with MATLAB
3. MATLAB Exercices, www.facstaff.bucknell.edu

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