30 0 620KB
Ministerul Educaţiei al Republicii Moldova Universitatea Tehnică a Moldovei Facultatea Calculatoare Informatică şi Microelectronică Catedra Microelectronica şi Ingineria Biomedicală
Disciplina: Procesarea avansată a semnalelor şi imaginilor.
Lucrarea de laborator Nr.1 Tema: Proiectarea şi studierea semnalelor folosind MATLAB.
A efectuat:
A verificat:
Chişinău 2014
Scopul lucrării: Proiectarea studierea şi semnalelor folosind MATLAB. Varianta A B C D 2 3 2 25 11 1. Modelarea şi procesarea semnalelor. 1.1.
E
F
15
25
Am modelat trei semnale periodice conform variantei.
>> t=0:.001:1; >> sq=2*square(25*pi*t+pi/6); >> tri=3*sawtooth(15*pi*t+pi/6); >> cosine=2*cos(25*pi*t+pi/6); 1.2. Am modelat un semnal periodic compus din suma a trei semnale conform variantei. >> semsem=sq+cosine+tri; 1.3. Am afişat atât semnalele elementare ce au întrat în componenţa semnalului semsem cât şi însuşi semnalul semsem în formă continuiă şi discretă (folosind procedura plot şi stem): Semnalul elementar „sq” în formă continuă: >> plot(t,sq), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnal periodic in forma dreptunghiulara') xlabel('t,sec'),ylabel('X(t)'),grid axis([0,1,-3,3]);
Semnalul elementar „sq” în formă discretă: >> stem(t,sq), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnal periodic in forma dreptunghiulara') xlabel('t,sec'),ylabel('X(t)'),grid axis([0,1,-3,3]);
Semnalul elementar „tri” în formă continuă: >> plot(t,tri), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnal periodic in forma triunghuilara') xlabel('t,sec'),ylabel('X(t)'),grid axis([0,1,-4,4]);
Semnalul elementar „tri” în formă discretă: >> stem(t,tri), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnal periodic in forma triunghiulara') xlabel('t,sec'),ylabel('X(t)'),grid axis([0,1,-4,4]);
Semnalul elementar „cosine” în formă continuă: >> plot(t,cosine), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnal periodic in forma cosinusoidala') xlabel('t,sec'),ylabel('X(t)'),grid axis([0,1,-3,3]);
Semnalul elementar „cosine” în formă discretă: >> stem(t,cosine), grid, set (gca,'FontName', ...'ArialCyr','FontSize',16) title('Semnal periodic in forma cosinusoidala') xlabel('t,sec'),ylabel('X(t)'),grid axis([0,1,-3,3]);
Semnalul „semsem” în formă continuiă: >> plot(t,semsem), grid, set (gca,'FontName', ...'ArialCyr','FontSize',16) title('Semnal periodic compus din mai multe semnale') xlabel('t,sec'),ylabel('X(t)'),grid
Semnalul „semsem” în formă discretă: >> stem(t,semsem), grid, set (gca,'FontName', ...'ArialCyr','FontSize',16) title('Semnal periodic compus din mai multe semnale') xlabel('t,sec'),ylabel('X(t)'),grid
1.4.
Utilizând procedura:
>>x1=rand(1,length(t)); am modelat un zgomot alb. Am afişat acest zgomot (plot) şi histograma acestuia. >>plot(t,x1), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Zgomot alb') xlabel('t,sec'),ylabel('X(t)'),grid
>> hist(x1,t); >> title('Histograma zgomotului alb');
1.5.
Am efectuat adunarea zgomotului alb x1 cu semnalul semsem şi am afişat rezultatul.
>> sem2=semsem+x1; >>plot(t,sem2), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnalul afectat de zgomot') xlabel('t,sec'),ylabel('X(t)'),grid
1.6.
Am proiectat un filtru şi am efectuat filtrarea semnalului sem2 afectat de zgomot.
>> T1=1; >> Ts=0.075; >> Tf=T1; >> dz=0.47; >> om0=2*pi/Tf; >> A=1; >> oms=om0*Ts; >> a(1)=1+2*dz*oms+oms^2; >> a(2)=-2*(1+dz*oms); >> a(3)=1; >> b(1)=A*Ts*Ts*(2*dz*om0^2); >> y=filter(b,a,sem2); Am afişat rezultatul: >>plot(t,y), grid, set (gca,'FontName', ... 'ArialCyr','FontSize',16) title('Semnalul filtrat de zgomot') xlabel('t,sec'),ylabel('X(t)'),grid 1.7.
Am afişat pe acelaşi grafic semnalul iniţial şi cel filtrat:
>> plot(t,semsem,t,y); >> title('Semnalul initial si semnalul filtrat');
1.8. Am aplicat procedura filtfilt pentru a exclude întârzierea întrodusă de filtru: >> y=filtfilt(b,a,sem2);
1.9. Am afişat pe acelaşi grafic semnalul iniţial şi cel filtrat prin procedura filtfilt: >> plot(t,semsem,t,y); >> title('Semnalul initial si semnalul filtrat');
1.10. Am efectuat convoluţia semnalului semsem cu semnalul sq folosind procedura: >> c=conv(semsem,sq); >> n=1:1:2001; Am afişat rezultatul: >> stem(n,c); >> title('Convolutia');
1.11. Am calculat convoluţia din punctul precedent prin intermediul transformării Fourrier inverse: >> m=2001; >> AE=fft(semsem,m); >> BE=fft(sq,m); >> y1=ifft(AE.*BE); >> n=1:1:2001; Am afişat rezultatul: >> stem(n,y1); >> title('Convolutia');
1.12. Am calculat şi am afişat eroarea determinării convoluţiei prin metoda alternativă: >> y2=y1-c;
>> stem(n,y2); >> title('Eroarea determinarii convolutiei');
1.13.
Am repetat punctul 1.10 şi 1.11 pentru convoluţia semnalelor semsem cu semnalul tri.
>> c=conv(semsem,tri); >> n=1:1:2001;
Am afişat rezultatul: >> stem(n,c); >>title('Convolutia'); >> m=2001; >> AE=fft(semsem,m); >> BE=fft(tri,m); >> y1=ifft(AE.*BE); >> n=1:1:2001;
Am afişat rezultatul: >> stem(n,y1);
1.14.
Am determinat modului şi faza transformarea Fourrier rapidă a semnalului semsem:
>> y2=fft(semsem); >> m=abs(y2); >> p=unwrap(angle(y2)); >> f=(0:length(y2)-1)*99/length(y); >> plot(f,m); title('Magnituda'); >> set(gca,'XTick',[15 40 60 85]); >> figure; plot(f,p*180/pi); title('Faza'); >> set(gca,'XTick',[15 40 60 85])
Am aplicat procedura fftshift şi am afişat 1.15. dependenţa modului de frecvenţă:
>>
xp=fftshift(y); >>a=abs(xp); >>df=1; >>Fmax=1/0.001; >>f1=-Fmax/2:df:Fmax/2; Am afişat rezultatul: >>stem(f1,a);
1.16. Am generat un semnal purtător de frecvenţă şi am efectuat modulaţia de amplitudă: >>s_pur=cos(2*pi*200*t); >>s_AM=semsem.*s_pur; >>subplot(3,1,1) >>plot(t,semsem) >>grid on >>subplot(3,1,2) >>plot(t,s_pur) >>grid on >>subplot(3,1,3) >>plot(t,s_AM)
1.17. Am adăgat o constantă pentru a primi un semnal unipolar: >> s_AM=(semsem+7).*cos(2*pi*200*t); >>subplot(2,1,1) >>plot(t,semsem) >>grid on >>subplot(2,1,2) >>plot(t,s_AM)
1.18. Am cercetat spectrele semnalelor modulator şi modulat >>w=-20:0.1:20; >>w0=10; >>semsem=1./(1+w.^2); >>S_AM=0.5./(1+(w+w0).^2)+ 0.5./(1+(w-w0).^2); >>plot(w,semsem,'--',w,S_AM)
Concluzie: În urma efectuării acestei lucrări de laborator am făcut cunoştinţă cu modelarea și procesarea semnalelor. Am modelat trei semnale periodice, apoi am sumat aceste trei semnale, modelind un semnal periodic compus din suma celor trei semnale. Apoi am modelat un zgomot alb, apoi am adunat zgomotul cu semnalul periodic. După acceasta am proiectat un filtru și am efectuat filtrarea semnalului afectat de zgomot. Am aplicat procedura filt filt pentru a exclude intirzierea produsa de filtru. Apoi am efectuat si convoluția a doua semnale, am determinat modul și faza transformării Fourrier rapidă. Am aplicat procedura fftshift şi am afişat dependenţa modului de frecvenţă. Dupa aceasta am generat un semnal purtător de frevenţă şi am efectuat modulaţia de amplitudă, pntru a primi un semnal unipolar am adaugat o constantă. Apoi am cercetat spectrele semnalelor modulator şi modulat.