Formule de dualitate timp-frecventa
Universitatea Tehnica "Gh. Asachi", Iasi, Facultatea de Electronica si Telecomunicatii
Laboratorul de Semnale, Circuite si Sisteme
Breviar teoretic
Scopul lucrarii:
Studiul spectrului unui semnal periodic, a spectrului unui semnal esantionat si a unui semnal periodic si esantionat.
Rezumat teoretic:
Semnalul periodic se defineste prin repetarea unui puls generator la intervale de timp T:
.
Pentru semnalul periodic astfel definit se deduce o formula a spectrului semnalului periodic in functie de spectrul pulsului generator.
Semnalul discret se obtine prin esantinarea unul semnal continuu:
Se deduce o formula care exprima spectrul semnalului discret in functie de spectrul semnalului continuu.
> restart:with(inttrans):
> libname:="../SCSlib",libname:
> F:=table([dir=FOURIER,inv=inttrans[invfourier]]):
Pentru esantionare lucram cu semnalul periodic:
> delta[T]:=(t,T)->sum(Dirac(t-n*T),`n`=-infinity..infinity);
Spectrul semnalului este:
> delta[Omega]:=subs(T=2*Pi/Omega,F[dir](delta[T](t,T),t,omega));
Reprezentarea grafica:
> T1:=1: PLOT(rpa(eval(ts(delta[T](t,T),n=-10..10),T=T1),t,interval=-5.5..5.5,tipgrafic=modul,culoare=[1,0,0]),AXESSTYLE(NORMAL),AXESLABELS("t",""),TITLE("DeltaT(t)"));PLOT(rpa(eval(ts(delta[Omega],n=-10..10),Omega=2*Pi/T1),omega,interval=-15..15,tipgrafic=modul,culoare=[1,0,0]),AXESSTYLE(NORMAL),AXESLABELS("omega",""),TITLE("DeltaOmega(omega)"));
Mod de lucru
In afara de functiile incluse in libraria standard Maple, in aceasta lucrare vor fi utilizate cateva functii din libraria aditionala SCSlib.
Pentru calcularea transformatei Fourier a unor semnale:
Pentru trunchierea unor serii:
Pentru reprezentarea spectrelor unor semnale:
> restart:with(inttrans):
> libname:="../SCSlib",libname:
> F:=table([dir=FOURIER,inv=inttrans[invfourier]]):
> delta[T]:=(t,T)->sum(Dirac(t-n*T),`n`=-infinity..infinity):delta[Omega]:=subs(T=2*Pi/Omega,F[dir](delta[T](t,T),t,omega)):
Spectrele semnalului generator, semnalului periodic, semnalului esantionat sunt definite astfel:
> Sg:=(omega)->F[dir](sg(t),t,omega):
> Sp:=(omega)->F[dir](sp(t),t,omega):
> Ses:=(omega)->F[dir](ses(t),t,omega):
> Spes:=(omega)->F[dir](spes(t),t,omega):
Semnale Periodice
Definim pe baza pulsului generator, semnalul periodic de perioada T:
> sp:=(t)->sum(sg(t-n*T),`n`=-infinity..infinity);
Pentru forma particulara a semnalului gererator de tip puls dreptunghiular:
> sg:=(t)->1/tau*(Heaviside(t+tau/2)-Heaviside(t-tau/2));
Spectrul semnalului generator si al semnalului periodic:
> Sg(omega);Sp(omega);
Semnal periodic dreptunghiular cu factor de umplere 1/3:
> plot(eval([sg(t),ts(sp(t),n=-10..10)],[tau=1,T=3]),t=-10..10, view=[-6.2..6.2,-0.5..1.5],title="Semnalul periodic (rosu) si pulsul generator (negru)", color=[black,red],style=LINE, thickness=2 );
Spectrul semnalului periodic si spectrul semnalui generator:
> PLOT(rpa(ts(eval(Sp(omega),[tau=1,T=3]),n=-20..20),omega,interval=-30..30,tipgrafic=modul,culoare=[1,0,0]),rpa(eval((2*Pi)/T*Sg(omega),[tau=1,T=3]),omega,interval=-30..30,tipgrafic=modul),AXESSTYLE(NORMAL),AXESLABELS("omega",""),TITLE("|Sp(omega)| (rosu) si |Sg(omega)| (negru)"));
Concluzie
:
Spectrul unui semnal periodic este discret.
Spectrul semnalului periodic este o versiune discretizata a spectrului semnalului generator cu o rata de esantionare egala cu
.
Obs. :S-a preferat o forma a semnalului generator simpla, cu suport finit. Din acest motiv spectrul semnalului generator este infinit.
Semnalul periodic se obtine prin produs de convolutie:
Spectrul semnalului periodic se obtine prin produs algebric:
.
Semnale esantionate
> ses:=(t)->sg(t)*delta[T](t,Tes);
> sg:=(t)->(sin(omega0*t)/(omega0*t));
Spectrul semnalului generator si al semnalului esantionat:
> Sg(omega);sum(Omega*S[g](omega-n*Omega),`n`=-infinity..infinity);
> PLOT(rpa(collect(expand(ts(eval(ses(t),[Tes=1,omega0=1]),n=-20..20)),Dirac),t,interval=-10..10,tipgrafic=real,culoare=[1,0,0]),rpa(eval(sg(t),omega0=1),t,interval=-10..10,tipgrafic=real,culoare=[0,0,0]),TITLE("Semnalul original (negru) si semnalul esantionat (rosu)"));
> plot([eval( Sg(omega),[Tes=1,omega0=1]), ts(eval(Ses(omega),[Tes=1,omega0=1]),n=-5..5)],omega=-21..21, title="|Ses(omega)| (rosu) si |Sg(omega)| (negru)", color=[black,red],style=LINE, thickness=2 );
Concluzie
:
Spectrul unui semnal discret este periodic
.
Spectrul semnalului esantionat este o versiune periodizata a spectrului semnalului generator cu perioada
.
Obs. :S-a preferat o forma a semnalului generator mai complicata, cu suport infinit pentru ca spectrul semnalului generator sa fie finit.
Semnalul esantionat se obtine prin produs algebric:
Spectrul semnalului esantionat se obtine prin produs de convolutie:
.
S-a ales o frecventa de esantionare care sa respecte teorema esantionarii astfel incit sa nu apara fenomen de aliasing .
Semnale periodice si esantionate
Definim semnalul periodic armonic de pulsatie
provenit dintr-un puls generator:
> sp:=(t)->cos(omega0*t):sg:=cos(omega0*t)*(Heaviside(t+Pi/omega0)-Heaviside(t-3*Pi/omega0)):
> spes:=(t)->sp(t)*delta[T](t,Tes);
Spectrul semnalului esantionat este:
> Spes(omega);
> PLOT(rpa(collect(expand(ts(eval(spes(t),[Tes=1,omega0=1]),n=-20..20)),Dirac),t,interval=-10..10,tipgrafic=real,culoare=[1,0,0]),rpa(eval(sp(t),omega0=1),t,interval=-10..10,tipgrafic=real,culoare=[0,0,0]),TITLE("Semnalul periodic (negru) si semnalul periodic esantionat (rosu)"));
> PLOT(rpa(eval(Sp(omega),[Tes =1, omega0=1]),omega,interval=-30..30,tipgrafic=modul,culoare=[0,0,0]), rpa(ts(eval(Spes(omega),[Tes=1,omega0=1]),n=-20..20),omega,interval=-30..30,tipgrafic=modul,culoare=[1,0,0]), AXESSTYLE(NORMAL),AXESLABELS("omega",""),TITLE("Spes(omega) (rosu) si Sp(omega) (negru)"));
Concluzie : Spectrul unui semnal discret si periodic este periodic si discret .