Documente Academic
Documente Profesional
Documente Cultură
Observaie: dac vor exista cel puin dou fiiere cu acelai nume, se va executa cel ce apare primul n calea implicit de cutare din MATLAB. n interiorul fiierului script, se pot accesa variabile definite anterior n MATLAB. Toate variabilele din fiierul script sunt variabile globale, ceea ce nseamn c dup execuia fiierului script aceste variabile pot fi accesate i din linie de comand. b) Pentru a crea o funcie denumit, de exemplu, func, trebuie creat mai nti fiierul denumit func.m. Prima linie din acest fiier trebuie s fie: function <output> = func(<input>) unde <input> desemneaz setul de variabile de intrare, iar <output> reprezint variabilele de ieire. Restul fiierului funcie va conine secvena de comenzi dorit. Toate variabilele din interiorul funciei sunt variabile locale. Acest lucru va avea ca urmare, pe de-o parte, faptul c dup executarea funciei nu mai putem avea acces la variabilele sale interne, i pe de alt parte faptul c funcia nu poate accesa alte variabile create anterior n spaiul de lucru, dac acestea nu sunt oferite funciei ca intrri.
b = [-5 4 0 34 1] %se creeaza un vector linie cu 5 elemente Aflai dimensiunile matricelor A i B i ale vectorilor a i b, utiliznd comenzile size i respectiv length. Indicii tablourilor n MATLAB ncep de la 1, i nu de la 0, ca de exemplu n limbajul C. Prin urmare, valoarea 1 din vectorul a reprezint elementul cu indice 1, iar valoarea 34 din vectorul b reprezint elementul cu indice 4. Pe lng utilizarea lor curent n funcii, parantezele rotunde sunt folosite i pentru a desemna elemente sau poriuni dintr-o matrice (vezi ex. 6). Simbolul : este utilizat pentru a descrie liste de numere succesive egal distanate, forma general fiind: start:pas:stop (dac valoarea pasului se omite, se consider implicit c acesta este 1). Aceasta reprezint practic a doua modalitate de a crea vectori n MATLAB, pe lng introducerea element cu element, aa cum a fost descris anterior (vezi ex. 6). Operaia de transpunere se realizeaz n MATLAB folosind simbolul (apostrof). Atunci cnd este utilizat un punct, . , nainte de un operator (ca de exemplu .* ), MATLAB va realiza operaia respectiv element cu element (de exemplu nmulind elementele corespunztoare, spre deosebire de nmulirea clasic a matricelor sau vectorilor). 2
Ex. 6 Introducei urmtoarele comenzi i interpretai rezultatele obinute: A(2,1) b(1) C = B(1:2,2:3) c = b(1:3) v1 = 1:3:20 v2 = 6:-2:1 v3 = 0:4 v3(1) v4 = 3:-3 v5 = 0.1:0.1:1.2 D = A d = v3 v6 = [1; 3; 5; 7; 9] %se creeaza un vector linie cu 5 elemente rezultat1 = b*v6 rezultat2 = b*v6 rezultat3 = b.*v6 rezultat4 = b.*v6 v7 = v3./2 v8 = v3.^2 %inmultire matriceala %inmultirea nu este posibila! interpretati %mesajul de eroare (tastati whos!) %inmultire element cu element %inmultirea nu este posibila! interpretati %mesajul de eroare (tastati whos!) %se imparte la 2 fiecare element din v3 %se ridica la patrat fiecare element din v3 %se copiaza in vectorul c primele trei %elemente din vectorul b %ultima valoare din v1 va fi 19, nu 20!
end disp(n) end M help disp Ex. 9 Introducei urmtoarele comenzi i interpretai rezultatul obinut: k = 1; k = k/2; if k <= 0.0015 k = k*2 break end end num help break for num = 1:100
x = linspace(-2,2,50); y = x./(1+x.^2); plot(x,y,'r') title('Test1 - plot') axis([-2,2,-0.8,0.8]) xlabel('x') ylabel('y') grid figure stem(x,y,'b') title('Test2 - stem') axis([-2,2,-0.8,0.8]) xlabel('x') ylabel('y') grid figure subplot(2,1,1), plot(x,y,'r') title('Test3 - subplot') axis([-2,2,-0.8,0.8]) xlabel('x') ylabel('y') grid subplot(2,1,2), stem(x,y,'b') axis([-2,2,-0.8,0.8]) xlabel('x') ylabel('y') grid
Ex. 11 a. S se genereze i s se reprezinte grafic o secven impuls-unitate, definit pe 11 eantioane, n [0, 10] (se va crea un fiier script). b. Aceleai cerine pentru secvena impuls-unitate ntrziat cu 4 eantioane. Rezolvare: %Exemplul 11 %Reprezentarea unor secvente impuls-unitate close all clear all n = 0:10; delta = [1 zeros(1,10)]; %help zeros %O alta modalitate (evident mai complicata): %delta = [1 0 0 0 0 0 0 0 0 0 0]; delta1 = [zeros(1,4) 1 zeros(1,6)]; subplot(2,1,1), stem(n,delta,'filled') axis([0 10 0 1.2]) title('Secvente impuls-unitate') xlabel('n') ylabel('delta(n)') subplot(2,1,2), stem(n,delta1,'filled') axis([0 10 0 1.2]) xlabel('n') ylabel('delta(n-4)') Ex. 12 a. S se genereze i s se reprezinte grafic o secven treapt-unitate, definit pe 21 eantioane n [0, 20] (se va crea un fiier script). b. Aceleai cerine pentru secvena treapt-unitate ntrziat cu 8 eantioane. Rezolvare: %Exemplul 12 %Reprezentarea unor secvente treapta-unitate close all clear all n = 0:20; treapta = ones(1,21); %help ones %Sau: %treapta = [ones(1,21)]; treapta1 = [zeros(1,8) ones(1,13)];
subplot(2,1,1), stem(n,treapta,'filled') axis([0 20 0 1.2]) title('Secvente treapta-unitate') xlabel('n') ylabel('u(n)') subplot(2,1,2), stem(n,treapta1,'filled') axis([0 20 0 1.2]) xlabel('n') ylabel('u(n-8)') Observaie: n orice moment al rulrii unui program, execuia acestuia se poate ntrerupe utiliznd combinaia de taste CTRLC (uneori, apsarea acestor taste trebuie fcut de mai multe ori pentru a iei din program!). Acest lucru poate fi necesar, de exemplu, dac s-a omis un ; la finalul unei comenzi ce genereaz un numr foarte mare de valori, dac programul a rmas ntr-o bucl infinit etc.
Ex. 13 S se genereze i s se reprezinte grafic o secven exponenial real, definit astfel: x ( n) e n , n [0, 15] (16 eantioane); se va crea un fiier script. Rezolvare: %Exemplul 13 %Reprezentarea unei secvente exponentiale reale close all clear all n = 0:15; x = exp(-n/3); %help exp stem(n,x,'filled') axis([0 16 0 1.2]) title('Secventa exponentiala reala') xlabel('n') ylabel('x')
Ex. 14 S se genereze i s se reprezinte grafic dou secvene sinusoidale, astfel: prima are frecvena fundamental de 50 Hz, faza 0 i amplitudinea 1, iar a doua are frecvena de 200 Hz, faza 0 i amplitudinea 1.5 (se va crea un fiier script). S se reprezinte cele dou secvene pe durata a 21 de eantioane; se cunoate faptul c frecvena de eantionare a semnalelor este 1 kHz. Problem: determinai prin calcul numrul de perioade ce va fi afiat n fereastra grafic pentru fiecare dintre cele dou sinusoide. Rezolvare: %Exemplul 14 %Reprezentarea unor secvente sinusoidale 7
close all clear all %Fe = 1 kHz; Te = 1/Fe = 1 ms (= 0.001 s) %durata = 20*0.001 = 0.02 s n = 0:.001:.02; s1 = sin(2*pi*50*n); s2 = 1.5*sin(2*pi*200*n); subplot(2,1,1), stem(n,s1,'filled') axis([0 .02 -1.5 1.5]) title('Secvente sinusoidale') xlabel('timp [s]') ylabel('s1') subplot(2,1,2), stem(n,s2,'filled') axis([0 .02 -1.5 1.5]) xlabel('timp [s]') ylabel('s2')
Ex. 15 S se genereze i s se reprezinte grafic dou secvene de tipul sinc, astfel: pentru prima secven se va utiliza funcia MATLAB sinc, graficul se va trasa pe un interval simetric n jurul originii axelor, folosind stem i apoi plot; a doua secven, de argument pozitiv, se va genera utiliznd definiia clasic a funciei sinc, se va folosi plot, apoi se va genera aceeai secven n modul. Se va crea un singur fiier script pentru toatele punctele problemei. Rezolvare: %Exemplul 15 %Reprezentarea unor secvente de tip sinc close all clear all xs = linspace(-4,4); ys = sinc(xs); %help linspace %help sinc
%help abs