Creeaza.com - informatii profesionale despre


Simplitatea lucrurilor complicate - Referate profesionale unice
Acasa » referate » matematica
Secvente numerice 1d si 2d in matlab

Secvente numerice 1d si 2d in matlab


secvenTe numerice 1D Si 2D

Obiectivele lucrarii

1) Asimilarea functiilor MATLAB specifice lucrului cu secvente discrete 1D si 2D;

2) Deprinderea tehnicilor de analiza a secventelor discrete in domeniile temporal si spectral;

3) Studiul interactiv al proprietatilor secventelor discrete si al operatorilor aplicati acestora utilizand mediul DIDACTICIEL.

Desfasurarea lucrarii

Esantionarea semnalelor continue

Sa se reprezinte formele de unda pentru un semnal sinusoidal continuu si varianta sa esantionata (in timp discret) , stiind ca:



Semnalul esantionat se scrie:

Se obtine deci:

unde: .

Deoarece si , rezulta:

O imagine grafica sugestiva asupra corespondentelor in frecventa dintre domeniile timp continuu si timp discret este redata in figura 1.1.


Figura 1.1

Codul MATLAB urmator reprezinta formele de unda pentru un semnal sinusoidal continu si discret, pentru urmatorii  parametri:

Fe=16e3; t=0:1/Fe:5e-3; n=0:length(t)-1;

subplot(211); plot(t,10*sin(2 pi*1200*t+pi/4));

xlabel('timp continuu'); ylabel('amplitudine')

title('Semnal sinusoidal continuu')

subplot(212); stem(10*sin(2*pi*(1200/16000)*n+pi/4))

xlabel('timp discret'); ylabel('amplitudine')

title(' Semnal sinusoidal discret')

Secvente elementare

Sa se genereze si sa se reprezinte grafic secventele numerice 1D elementare urmatoare:

a) impuls Dirac ,

b) semnal treapta unitate ,

c) semnal poarta ,

d) semnal sinusoidal cu frecventa 1 KHz esantionat la 10 KHz ,

e) semnal sinus cardinal ,

f) semnal exponential ,

g) semnal putere ,

f) semnal logaritm natural ,

h) semnal aleator cu repartitie normala cu media 1.5 si 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)]);

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,12) ones(1,5) zeros(1,3)]);

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+.5*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)

In cazul ultimului semnal, sa se verifice valorile mediei si dispersiei. Ce valoare are puterea semnalului ?

Secvente complexe

Sa se genereze semnalul:

,

unde:   K=2, , .

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 semnificatia partii reale si a partii imaginare a lui c ?

Secvente modulate

Sa se genereze semnalul modulat in amplitudine:


unde: m= 0.4, , .

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');

Reprezentarea secventelor numerice 1D si 2D folosind seria Fourier in timp discret (SFTD)

O secventa 1D periodica poate fi reprezentata reprezentata prin seria Fourier in timp discret 1D ():

unde:

In mod similar, o secventa 2D periodica poate fi reprezentata prin seria Fourier in timp discret 2D ():

unde:

,

a) Sa se realizeze descompunerea in a unei serii de impulsuri periodice cu factorul de umplere 0.5. Motivul de baza va fi definit folosind 64 de esantioane. Sa se verifice apoi proprietatile generale ale coeficientilor descompunerii in a unei secvente periodice, cu valori reale, pentru care:

b) Sa se realizeze descompunerea in a unei secvente 2D periodice al carei motiv de baza este definit de o secventa rectangulara unitara de 8 8, avand un suport 2D de 16

a)

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)))

b)

x=zeros(16);x(1:8,1:8)=ones(8);c=zeros(16);N=16;

for k1=0:N-1

for k2=0:N-1

for n1=0:N-1

for n2=0:N-1

c(k1+1,k2+1)=c(k1+1,k2+1)+x(n1+1,n2+1)*

exp(-j*2*pi*k1/N*n1-j*2*pi*k2/N*n2);

end

end

end

end

c=abs(c)

Teorema esantionarii

1. Sa se genereze un semnal de 0.5 s compus din suma a doua sinusoide de frecvente 100 Hz si 156 Hz cu amplitudinea de 1V. Se considera o frecventa de esantionare de 256 Hz. Reprezentati semnalul suma. Comentati rezultatul.

2. Sa se genereze, sa se reprezinte si sa se compare doua sinusoide de frecvente 100 Hz si 356 Hz si amplitudinea de 1V. Se considera o frecventa de esantionare de 256 Hz.

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)') ; ylabel('amplitudine (V)')

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); ylabel('amplitudine (V)');

title('sinusoida de frecventa 100 Hz')

subplot(212); plot(t/fe,y2);

xlabel('timp (s)'); ylabel('amplitudine (V)');

title('sinusoida de frecventa 356 Hz')

Semnalul chirp

Semnalul chirp , de durata T, are expresia: , unde faza instantanee este data de: . Rezulta ca frecventa instantanee a semnalului chirp, , variaza liniar pe durata T, conform relatiei: , sau: .

Secventa MATLAB urmatoare analizeaza in domeniile temporal si frecvential un semnal chirp, a carui frecventa instantanee variaza intre 0 si  5 MHz, pe o durata . Frecventa de esantionare utilizata este .

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 Fourier discreta in timp discret (TFTD)

Sa se elaboreze o functie MATLAB pentru calculul TFTD a unei secvente finite, de lungime , pentru frecvente echidistante pe cercul unitate. Sa se utilizeze functia creata pentru calculul TFTD a secventei in puncte.

function [H,W]=tftd(h,N)

W=(2*pi/N)*[0:N-1]'; mid=ceil(N/2)+1;

W(mid:N)=W(mid:N)-2*pi; W=fftshift(W);

H=fftshift(fft(h,N));

nn=0:40; xn=0.88.^nn;

[X,W]=tftd(xn,128);

subplot(211),plot(W/2/pi,abs(X))

xlabel('frecventa normalizata')

ylabel('amplitudine [V]')

subplot(212),plot(W/2/pi,180/pi*angle(X))

xlabel('frecventa normalizata')

ylabel('faza [grade]')

Transformata Hilbert

Fie secventa reala: . Transformata sa Hilbert notata - constituie partea imaginara a secventei analitice: . Sa 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));

title('Semnalul real');

xlabel('n');ylabel('Amplitudine');

subplot(212);stem(imag(y));

title('Transformata Hilbert a semnalului');

xlabel('n'); ylabel('Amplitudine');

Functia pondere a unui transformator Hilbert si functia sa de transfer pot fi obtinute 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);

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

Functia pondere a unui transformator Hilbert poate fi, de asemenea, obtinuta folosind:

h=remez(64,[0.1,0.9],[1,1], 'Hilbert');

Secvente 2D

Secventa 2D:

x

1 0 0 0 1

1 0 0 0 1

1 0 0 0 1

1 1 1 1 1];

reprezinta o imagine binara, sub forma unui patrat negru pe un fond alb. Vizualizati aceasta imagine. Calculati apoi TFD2D a matricii si vizualizati rezultatul acestei transformari. Comentati.

x=[1 1 1 1 1;1 0 0 0 1;1 0 0 0 1;1 0 0 0 1;1 1 1 1 1];

Xf=fft2(x);Xfsh=fftshift(Xf);

subplot(221);

imagesc(x);

title('imagine initiala ')

subplot(222);

imagesc(log(abs(Xf)));

title('Modulul spectrului imaginii')

subplot(223);

imagesc(log(abs(Xfsh)));

title('Modulul spectrului simetrizat al imaginii')

subplot(224);

imagesc(unwrap(angle(Xf)));

title('Faza spectrului imaginii') ;

colormap(gray)

Analiza Fourier a secventelor 2D

Incarcati imaginile "Clown" si "Gatlin2" sub MATLAB. Reprezentati spectrele celor doua imagini si apoi reconstruiti cele doua imagini interschimband spectrele de faza ale acestora.

load clown ; x = X;load gatlin2 ; y = X;

l = min(size(x,1),size(y,1));

c = min(size(x,2),size(y,2));

x = x(1:l,1:c);y = y(1:l,1:c);

X=fft2(x) ; Y=fft2(y);

Z1 = abs(X).*exp(i*angle(Y));

Z2 = abs(Y).*exp(i*angle(X));

z1 = real(ifft2(Z1));

z2 = real(ifft2(Z2));

figure(1)

fh = ([1:l]-l/2)/l;fv = ([1:c]-c/2)/c;

subplot(3,2,1); image(x); axis('image');

title('imagine x'); axis off

subplot(3,2,2); image(y); axis('image');

title('imagine y'); axis off

subplot(3,2,3);

imagesc(fh,fv,log(abs(fftshift(X.^2))));

axis('image'); title('Modul X');

xlabel('frecvente orizontale');

ylabel('frecvente verticale')

subplot(3,2,4);

imagesc(fh,fv,log(abs(fftshift(Y.^2))));

axis('image'); title('Modul Y');

xlabel('frecvente orizontale');

ylabel('frecvente verticale')

subplot(3,2,5);

imagesc(fh,fv,angle(fftshift(X))); axis('image');

title('Faza X');xlabel('frecvente orizontale');

ylabel('frecvente verticale')

subplot(3,2,6);

imagesc(fh,fv,angle(fftshift(Y)));

axis('image'); title('Faza Y')

xlabel('frecvente orizontale');

ylabel('frecvente verticale')

figure(2) ;

subplot(2,2,1); image(x); axis('image');

title('imagine x'); axis off

subplot(2,2,2); image(y); axis('image');

title('imagine y'); axis off

subplot(2,2,3); image(z1);

axis('image'); axis off

title('imagine: modul x + faza y')

subplot(2,2,4); image(z2);

axis('image'); axis off

title('imagine: modul y + faza x');colormap('gray')

Concluzionati in privinta importantei spectrului de faza pentru reconstructia imaginilor.

Studiul secventelor numerice utilizand mediul DIDACTICIEL

1) Se lanseaza DIDACTICIEL-ul prin introducerea comenzii:

didact

2) Se studiaza interactiv proprietatile diverselor secvente numerice cu ajutorul meniurilor definite in:

Signal generator

Numerical signals

Random signals

Tema

Verificati proprietatea de liniaritate a :

folosind urmatoarele semnale:

si considerand .



Programul DIDACTICIEL a fost initiat de prof. André Quinquis si studentii sai de la ENSIETA - Brest, Franta, in 1998. Ulterior, in cadrul cooperarii tehnico-stiintifice dintre ENSIETA - Brest si ATM - Bucuresti, programul DIDACTICIEL a suferit numeroase imbunatatiri.





Politica de confidentialitate


creeaza logo.com Copyright © 2024 - Toate drepturile rezervate.
Toate documentele au caracter informativ cu scop educational.