Documente Academic
Documente Profesional
Documente Cultură
Scopul lucrrii
Utilizarea tehnicii de calcul pentru analiza si proiectarea circuitelor specifice din electronica aplicata. nsuirea comenzilor specifice programului MATLAB.
Dac prima linie a fiierului conine cuvntul function" fiierul respectiv este fiier funcie, care se caracterizeaz prin faptul c poate lucra cu argumente. La terminarea execuiei unei funcii, n memoria calculatorului nu rmn dect variabilele de ieire ale acesteia.
Fig.1 Fereastra de comenzi a Matlab-ului Selecia unei comenzi din bara de comenzi sau meniul principal se poate face cu mouse-ul sau cu ajutorul sgeilor, prin deplasarea zonelor active sau prin tastarea literei marcate n fiecare subcomand.
Meniul principal:
Pentru a deschide un fiier n Editorul/Debugger-ul Matlab-ului din meniul de comand se procedeaz n felul urmtor: pentru un fiier nou, se selecteaz File, apoi New, apoi New M-file; pentru un fiier existent se selecteaz File, apoi Open M-file si apoi se selecteaz fiierul dorit.
se tasteaz format short e pentru 5 cifre zecimale, format long e pentru 15 cifre zecimale i format bank pentru plasarea a dou cifre zecimale la dreapta punctului zecimal. Acelai lucru se poate face din meniu, selectnd File, Preferences, General, iar aici formatul dorit. cd apeleaz directorul curent. dir listeaz fiierele din directorul curent. dir numedirector listeaz fiierele din directorul numedirector. Comenzile who si whos furnizeaz numele variabilelor ce au fost definite n spaiul de lucru MATLAB: - who afieaz variabilele curente din memorie; - whos afieaz variabilele, dimensiunile lor, precum si tipul acestora (reale sau complexe). what listeaza fiierele M, MAT si MEX din directorul curent.
Pentru definirea variabilelor exist un numr de funcii predefinite, dintre care, cele mai uzuale pentru prelucrarea semnalelor, sunt prezentate n Tabelul 1. Tabelul 1 abs angle cos sin exp De exemplu: y=2*(1+4*j) c=abs(y) conduce la: c=8.2462 sau: u=angle(y) la: u=1.3258 valoarea absolut faza ataat unui numr complex, n radiani funcia cos, cu argumentul n radiani funcia sin, cu argumentul n radiani funcia exponenial cu baza e
Exemplu: Matricele sunt definite introducnd elementele linie cu linie: A=[1 2 3; 3 6 8] Aceast comand creeaz matricea
1 A= 3
2 6
3 8
Comanda A(2,1) afieaz rezultatul: ans = 3 Se remarc faptul c dac se atribuie o valoare unui element care ocup o poziie n afara dimensiunii maxime a unei matrice sau unui vector, dimensiunea acesteia/acestuia este mrit automat pn la valoarea indicelui noului element, iar elementele nedefinite sunt setate la valoarea zero. Comanda: A(2,5)=4 creeaz matricea:
1 A= 3
2 6
3 0 0 8 0 4
Comanda size(A) returneaz dimensiunea matricei A. Se definesc mai multe matrice particulare: matricea vid A=[ ]; matricea nul de ordin n m : A= zeros(n,m); matricea unitar de ordin n m : A= ones(n,m); matricea cu diagonal 1, de ordin n n: A= eye(n). Vectorii pot fi definii n dou moduri: introducerea explicit a componentelor vectorului; Comanda: v=[1 2 3 4 5 ] creeaz un vector cu o linie i 5 coloane. Comanda: v(6)=6 conduce la vectorul: v=[1 2 3 4 5 6] Al doilea mod este utilizat pentru a crea vectori cu elemente egal spaiate prin comanda: k=amin:pas:amax
unde amin este valoarea primului element din vector, pas este valoarea incrementului, amax limita pn la care pot lua valori componentele vectorului. Dac incrementul lipsete, atunci implicit valoarea sa este 1. Exemplu: k=0:0.5:5.1 creeaz un vector cu elementele 0, 0.5, 1, 1.5,....5 . Comanda length(v) returneaz lungimea vectorului v.
2.10.
Funciile de baz MATLAB pentru reprezentrile grafice sunt: plot loglog semilogx semilogy Pentru reprezentarea graficelor n coordonate liniare se utilizeaz funcia plot. Funcia plot se apeleaz cu una din sintaxele: plot (y) Dac argumentul y este complex, plot(y) este echivalent cu:
plot(real(y), imag(y)). Dac y este un vector real (linie sau coloan), atunci funcia plot traseaz graficul y=y(i), unde i=1,2,L este numrul de ordine al elementului y, L fiind lungimea vectorului y. plot (x,y) reprezint vectorul y funcie de vectorul x. Dac x este vector, iar y este matrice, atunci coloanele lui y sunt trasate n funcie de vectorul x, rezultatul fiind reprezentarea mai multor grafice n aceeai fereastr grafic. Dac x i y sunt matrice de aceeai dimensiune, atunci se reprezint coloanele lui y n funcie de coloanele lui x. plot (x,y,linie tip) linie tip fiind o succesiune de caractere care specific tipul liniei cu care este trasat graficul. plot (x1,y1,x2,y2,) reprezint simultan mai multe grafice, n acelai sistem de coordonate i n aceeai fereastr grafic. Graficele se pot trasa utiliznd linii i markere de diferite culori. Acest lucru este prezentat n Tabelul 2. Tabelul 2 Linii tip i markere Matlab continu ntrerupt -dou puncte : linie-punct -. + * o x . Culori cod Matlab Galben y Mov m Turcoaz c Rou r Verde g Albastru b Alb w Negru k
2.11.
Reprezentarea discret a datelor se face cu funcia stem sub forma unor linii terminate cu cercule. Se apeleaz cu una din sintaxele: stem(y) traseaz un grafic y=y[i], i=1,2,3 ....L din linii terminate cu cercule; stem(x,y) traseaz un grafic cu linii terminate cu cercule, cu locaiile specificate de vectorul x. Valorile lui x trebuie s fie egal spaiate; stem(x,ylinie-tip) este similar funciei plot(x,y,linie tip), cu deosebirea c se traseaz graficul cu linii terminate cu cercule. Observaie: att la funcia plot ct i la funcia stem lungimile vectorilor de pe abscis i ordonat trebuie sa fie egale.
2.12.
Personalizarea graficelor
Pentru plasarea n cmpul graficelor a unor texte, etichete ale axelor, precum i a titlului se utilizeaz urmtoarele funcii: title(text) comand prin care titlul graficului se plaseaz deasupra acestuia; text fiind un ir de caractere care reprezint titlul graficului; xlabel(text) precizeaz eticheta axei x; text fiind un ir de caractere care reprezint numele axei, unitatea de msur etc.; ylabel(text) precizeaz eticheta axei y; text fiind un ir de caractere care reprezint numele axei, unitatea de msur etc.; grid on traseaz o reea de linii orizontale i verticale pe grafic; grid off elimin reeaua de linii orizontale i verticale trasate pe grafic de grid on.
S se reprezinte grafic funcia f (t ) = cos( 2 t 100) cu culoarea albastr i linie ntrerupt i g(t) = f (t) cu markere * de culoare roie. S se scrie titlul graficele funciilor f(t) si g(t), pe axa x s se scrie t, iar pe axa y s se scrie f(t) i g(t).
t=0:.001:0.04 f=cos(2*pi*100*t) g=-f plot(t,f,'--b',t,g,'*r'),grid on title('Graficele functiilor f(t) si g(t)') xlabel('t'), ylabel('f(t) si g(t)')
Graficele functiilor f(t) si g(t) 1 0.5 f(t) si g(t) 0 -0.5 -1
Exemplu:
0.005
0.01
0.015
0.02 t
0.025
0.03
0.035
0.04
Secvene elementare
S se genereze i s se reprezinte grafic secvenele numerice 1D elementare urmtoare : a) impuls Dirac [n 5] , b) semnal treapt unitate u [n ] , c) semnal poart r[n 5] , d) semnal sinusoidal cu frecvena 1 KHz eantionat la 10 KHz sin [2 (1000 / 10000 ) n + / 4] , e) semnal sinus cardinal sinc[n ] , f) semnal exponenial e n , g) semnal putere 2 n / 2 , f) semnal logaritm natural ln[n ] , h) semnal aleator cu repartiie normal cu media 1.5 i dispersia 0.25. f=figure('Units','Norm','Position',[.01 .01 .98 .95]); set(f,'MenuBar','none'); a1=axes('Position',[.05 .7 .25 .25]); stem([zeros(1,14) 1 zeros(1,5)]); set(a1,'YLim',[0 1.5],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Impuls Dirac',2) a2=axes('Position',[.35 .7 .25 .25]); stem([zeros(1,10) ones(1,10)]);
10
set(a2,'YLim',[0 1.5],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal treapta unitate',2) a3=axes('Position',[.65 .7 .25 .25]); stem([zeros(1,10) ones(1,5) zeros(1,5)]); set(a3,'YLim',[0 1.5],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal poarta',2) a4=axes('Position',[.05 .4 .25 .25]); stem(sin(2*pi*.1*[0:20]+pi/4)); set(a4,'XLim',[0 20],'YLim',[-1 2],'XTick',[0:10:20],... 'XTickLabel',[0:10:20]*1e-4,'FontSize',8); legend('Semnal sinusoidal',2) a5=axes('Position',[.35 .4 .25 .25]); stem(sinc(.25*[-9:10])); set(a5,'XLim',[0 20],'YLim',[-.25 1.5],'XTick',... [0:5:20],'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal sinc',2) a6=axes('Position',[.65 .4 .25 .25]); stem(exp(-(0:20))); set(a6,'YLim',[0 1.2],'XLim',[1 21],'XTick',[1:5:21],... 'XTickLabel',[0:5:20],'FontSize',8); legend('Semnal exponential e^-^n',2) a7=axes('Position',[.05 .1 .25 .25]); stem(pow2(-0.5*(0:20))) set(a7,'YLim',[0 1.2],'XLim',[1 21],'XTick',[1:5:21],... 'XTickLabel',[0:5:20],'FontSize',8); legend('Semnal putere 2^-^0^.^5^n',2) a8=axes('Position',[.35 .1 .25 .25]); stem(log([.1:.1:2])) set(a8,'YLim',[-3 3],'XLim',[0 20],'XTick',[0:5:20],... 'XTickLabel',[0:.5:2],'FontSize',8); legend('Semnal logaritm natural',2) a9=axes('Position',[.65 .1 .25 .25]); stem(1.5+sqrt(0.25)*randn(1,20)) set(a9,'YLim',[0 4],'XLim',[0 20],'XTick',[0:5:20],... 'XTickLabel',[-10:5:10],'FontSize',8); legend('Semnal aleator normal',2)
n cazul ultimului semnal, s se verifice valorile mediei i dispersiei. Ce valoare are puterea semnalului ? Secvene complexe
11
unde : K=2, c = 1 / 12 + j / 6 , n N si 0 n 40 .
c = -(1/12)+(pi/6)*i; K = 2; n = 0:40; x = K*exp(c*n); subplot(2,1,1); stem(n,real(x)); xlabel(' Index temporal n'); ylabel('Amplitudine'); title('Parte reala'); subplot(2,1,2); stem(n,imag(x)); xlabel(' Index temporal n'); ylabel('Amplitudine'); title('Parte imaginara');
Care este semnificaia prii reale i a prii imaginare a lui c ? Secvene modulate
S se genereze semnalul modulat n amplitudine : y(n ) = (1 + m sin (2f b n )) sin (2f h n ) unde : m= 0.4, f b = 0.01, f h = 0.1 , n N si 0 n 100 .
n = 0:100 ; m = 0.4 ; fh = 0.1 ; fb = 0.01 ; xh = sin(2*pi*fh*n) ; xb = sin(2*pi*fb*n) ; y = (1+m*xb).*xh ; stem(n,y) ; grid ; xlabel(' Index temporal n') ; ylabel('Amplitudine');
12
x=[ones(1,32),zeros(1,32)];N=64; for k=0:N-1 c(k+1)=0; for n=0:N-1 c(k+1)=c(k+1)+x(n+1)*... exp(-j*pi*2*k/N*n); end c(k+1)=c(k+1)/N end stem(abs(c(1:N/2))); grid
Teorema eantionrii
1. S se genereze un semnal de 0.5s compus din suma a dou sinusoide de frecvene 100 Hz i 156 Hz cu amplitudinea de 1V. Se consider o frecven de eantionare de 256 Hz. Reprezentai semnalul sum. Comentai rezultatul. 2. S se genereze, s se reprezinte i s se compare dou sinusoide de frecvene 100 Hz i 356 Hz i amplitudinea de 1V. Se consider o frecven de eantionare de 256 Hz.
1. t=(1:128); f1=100; f2=156;fe=256; y=sin(2*pi*f1/fe*t)+sin(2*pi*f2/fe*t); plot(t/fe,y); xlabel('timp (s)');grid; ylabel('amplitudine (V)')
2.
t=(1:100); f1=100; f2=356; fe=256; y1=sin(2*pi*f1/fe*t); y2=sin(2*pi*f2/fe*t); subplot(211); plot(t/fe,y1);grid; ylabel('amplitudine (V)'); title('sinusoida de frecventa 100 Hz') subplot(212); plot(t/fe,y2);grid ; xlabel('timp (s)'); ylabel('amplitudine (V)'); title('sinusoida de frecventa 356 Hz')
Semnalul chirp
13
Secvena MATLAB urmtoare analizeaz n domeniile timp i frecven un semnal chirp, a crui frecven instantanee variaz ntre 0 i 5 MHz, pe o durat T = 10 s . Frecvena de eantionare utilizat este Fe = 50 MHz .
f0=0;ff=5e6; T=1e-5; beta=(ff-f0)*pi/T; Fe=5e7;t=0:1/Fe:T; x=cos(2*pi*f0*t+beta*t.^2); subplot(211),plot(t,x), xlabel('timp [s]'); ylabel('amplitudine [V]'); title('semnal temporal') X=abs(fft(x,1024)); subplot(212), plot([0:99]/Fe,X(1:100)) xlabel('frecventa [Hz]'); ylabel('amplitudine [V]'); title('spectrul semnalului')
Transformata Hilbert
2 n . Transformata sa Hilbert, notat Fie secvena real: x[n ] = cos N y[n ] , constituie partea imaginar a secvenei analitice: x [n ] + jy[n ] . S se determine transformata Hilbert a unui semnal cosinusoidal.
N=64;n=0:N-1; x=cos(2*pi/N*n); stem(x) ; y=hilbert(x); subplot(211);stem(real(y));grid;
14
Funcia pondere h[n ] a unui transformator Hilbert i funcia sa de transfer pot fi obinute astfel :
for nn=-31:1:32; h(nn+32)=2*pi./nn.*((sin(pi*nn/2)).^2); end h(32)=0;[H,f]=freqz(h); amp=20*log10(abs(H)); phase=unwrap(angle(H))*180/pi; subplot(311); stem(h);grid; title('Functia pondere'); xlabel('n') subplot(312); semilogy(f,amp); xlabel('Pulsatie normalizata'); ylabel('Amplitudine (dB)'); grid; subplot(313); plot(f,phase); xlabel('Pulsatie normalizata'); ylabel('Faza (grade)'); grid;
15
h1 = freqz(num, 1, w); h2 = freqz([zeros(1,D) num], 1, w); subplot(2,2,1) plot(w/(2*pi),abs(h1));grid title('Spectrul de amplitudine al secventei initiale') subplot(2,2,2) plot(w/(2*pi),abs(h2));grid title('Spectrul de amplitudine al secventei decalate') subplot(2,2,3) plot(w/(2*pi),angle(h1));grid title('Spectrul de faza al secventei initiale') subplot(2,2,4) plot(w/(2*pi),angle(h2));grid title('Spectrul de faza al secventei decalate') figure w = -pi:2*pi/255:pi; wo = 0.4*pi; num1 = [1 3 5 7 9 11 13 15 17]; L = length(num1); h1 = freqz(num1, 1, w); n = 0:L-1; num2 = exp(wo*i*n).*num1; h2 = freqz(num2, 1, w);
16
subplot(2,2,1) plot(w/(2*pi),abs(h1));grid title('Spectrul de amplitudine al secventei initiale') subplot(2,2,2) plot(w/(2*pi),abs(h2));grid title('Spectrul de amplitudine al secventei modulate') subplot(2,2,3) plot(w/(2*pi),angle(h1));grid title('Spectrul de faza al secventei initiale') subplot(2,2,4) plot(w/(2*pi),angle(h2));grid title('Spectrul de faza al secventei modulate')
17
X = fft(x,N); fp = (0:N-1)/N/0.01; fp = fp - 1/2/0.01; plot(fp,abs(fftshift(X)));grid ; axis([ -1/(2*0.01) 1/(2*0.01) 0 25]); xlabel('frecventa (Hz)'); ylabel('spectru de amplitudine')
18
b) S se genereze un semnal compus din suma a dou sinusoide de frecvene 100 i 94 Hz i de amplitudine 1V. Se va considera aceeai lungime a semnalului de 32 puncte, iar TFD va fi calculat tot n 1024 de puncte.
t=(1:32); f1=94;f2=100 ; Fe=256;Nfft=1024 ; y1= sin(2*pi*f1/Fe*t)+ sin(2*pi*f2/Fe*t); sig=y1.*boxcar(32)' ; y_rect=abs(fftshift((fft(sig,Nfft)))); sig=y1.*triang(32)'; y_tria=abs(fftshift((fft(sig,Nfft)))); sig=y1.*hanning(32)' ; y_hann=abs(fftshift((fft(sig,Nfft)))); sig=y1.*hamming(32)' ; y_hamm=abs(fftshift((fft(sig,Nfft)))); sig=y1.*blackman(32)'; y_blac=abs(fftshift((fft(sig,Nfft)))); f=[-Fe/2:Fe/Nfft:(Fe/2-Fe/Nfft)]; subplot(511) plot(f(513:1024),y_rect(513:1024)); grid;axis([0 128 0 20]) legend('fereastra dreptunghiulara',-1) subplot(512); plot(f(513:1024),y_tria(513:1024));grid; axis([0 128 0 7]) legend('fereastra triunghiulara',-1) subplot(513); plot(f(513:1024),y_hann(513:1024)); grid; axis([0 128 0 7]) legend('fereastra Hanning ',-1) ylabel('amplitudine spectrala') subplot(514); plot(f(513:1024),y_hamm(513:1024)); grid; axis([0 128 0 7]) legend('fereastra Hamming ',-1) subplot(515); plot(f(513:1024),y_blac(513:1024)); grid; axis([0 128 0 6]) legend('fereastra Blackman',-1) xlabel('frecventa (Hz)')
19
20
4. Desfurarea lucrrii
1. Se vor rula n Matlab toate aplicaiile descrise in breviarul teoretic i se va urmri execuia lor. 2. S se genereze i s se reprezinte grafic secvenele numerice 1D urmtoare: semnal sinusoidal cu frecvena de 3.2kHz eantionat la 10kHz cu o faz iniial de /2; semnal exponenial e 0.75n ; semnal putere 3 2n ; semnalul lg[2n] ; semnal aleator cu repartiia normal, cu media 1.64 i dispersia 0.1; 3. S se genereze i s se reprezinte n timp i frecven urmtoarele semnale: semnal sinusoidal cu frecvenla 8kHz eantionat la 30kHz; semnalul format din suma a dou semnale sinusoidale de 2kHz, respectiv 3kHz eantionate la 13kHz; semnal dreptunghiular cu perioada de 125s, eantionat la 15kHz; 4. S se realizeze modulaia n amplitudine avnd semnalul modulator x = sin(2 0.01 n) + cos(2 0.03 n) i semnalul modulat s = sin(2 0.2 n) , unde n N i 0 n 300 . Gradul de modulaie m este 0.6. 5. S se genereze i s se reprezinte n timp i frecven un semnal chirp, a crui frecven instantanee variaz ntre 10kHz i 10MHz, pe o durat T = 10 s. Frecvena de eantionare utilizat este Fe=70MHz. 6. Folosind funcia Matlab pentru calculul TFTD prezentat n lucrare s se calculeze TFTD i s se reprezinte grafic modulul i faza pentru urmtoarele semnale: x[n]=sin(0.3*n) n N=64 de puncte; x[n]=log(0.2*n) n N=256 de puncte.
21