Transformata Fouriera - sygnały ciągłe nieokresowe 00

Wstęp do transformaty Fouriera2009

Z poprzedniego wykładu wiemy, że ciągły sygnał okresowy x(t) o okresie T możemy także przedstawić za pomocą zespolonego szeregu Fouriera:
x(t)=(∑_(n=-∞)^∞)(Subscript[c, n]) (e^(i((2 n π)/T)t)) 
(Subscript[c, n]) =(1/T)(∫_(-(T/2))^(T/2))x(t)(e^(-i((2 n π)/T)t)) dt   - jest amplitudą zespoloną n=...-2,-1,0,1,2...
W przypadku sygnałów ciągłych nieokresowych możemy przyjąć, że T=∞: Wtedy czynnik ((2 π)/T) dąży do zera i suma przechodzi w całkę:
x(t)=(∫_(-∞)^∞)(OverHat[x])(f) (e^(i2πtf)) d f
(OverHat[x])(f)=(∫_(-∞)^∞)x(t)(e^(-i2πft)) dt   - jest amplitudą zespoloną n=...-2,-1,0,1,2...

Transformacja Fouriera jest transformacją całkową z dziedziny czasu w dziedzinę częstotliwości. Transformata jest wynikiem transformacji Fouriera (transformata jest funkcją, a transformacja operacją matematyczną na funkcji, dającą w wyniku transformatę). Będziemy przyjmować oznaczenia:
ℱx(t)=(OverHat[x])(f)=(∫_(-∞)^∞)x(t)(e^(-i2πft)) dt   - transformata Fouriera funkcji x(t). Transformacja ℱ działa na funkcję x(t) w wyniku czego otrzymujemy transformatę czyli funkcję (OverHat[x])(f). 
(ℱ^(-1))(OverHat[x])(f)=x(t)=(∫_(-∞)^∞)(OverHat[x])(f) (e^(i2πtf)) d f  - odwrotna transformata Fouriera. Transformacja (ℱ^(-1)) działa na funkcję (OverHat[x])(f) w wyniku czego otrzymujemy zrekonstruowaną funkcję x(t).

Transformacja Fouriera jest podstawowym narzędziem analizy harmonicznej funkcji, w której za składniki elementarne przyjmowane są zespolone funkcje eksponencjalne o postaci (e^(i2πtf)). Transformata (OverHat[x])(f) określa amplitudy poszczegónych składowych harmonicznych (e^(i2πtf)).

Poniżej mamy narysowaną funkcję schodkową: Do zapisania w Mathematice funkcji schodkowej możemy użyć np. funkcji Piecewise[] lub UnitStep[]:

Plot[Piecewise[{{0, -∞<t<-0.5},{1,-0.5≤t≤0.5},{0,0.5<t<∞}}], {t,-1,1}]

xt=Plot[UnitStep[(1/2-t) (1/2+t)], {t,-1,1},PlotLabel-> "sygnał"]

Do wyznaczenia transformaty Fouriera używamy w Mathematice FourierTransform[]

(OverHat[x1])[ω_]:=FourierTransform[Piecewise[{{0, -∞<t<-0.5},{1,-0.5≤t≤0.5},{0,0.5<t<∞}}],t,ω]
(OverHat[x2])[ω_]:=FourierTransform[UnitStep[(1/2-t) (1/2+t)],t,ω]

(OverHat[x1])[ω]
(OverHat[x2])[ω]

transx=Plot[(OverHat[x1])[ω],{ω,-50,50}, PlotRange->{-0.2, 0.5}, PlotLabel-> "transformata Fouriera sygnału"]

Poniżej przedstawiony sygnał schodkowy i jego transformata Fouriera

GraphicsRow[{xt,transx}]

Do wyznaczenia odwrotnej transformaty Fouriera używamy w Mathematice InverseFourierTransform[]

Simplify[InverseFourierTransform[(OverHat[x1])[ω],ω,t]]
Simplify[InverseFourierTransform[(OverHat[x2])[ω],ω,t]]

Plot[InverseFourierTransform[(OverHat[x1])[ω],ω,t],{t,-1,1}]

Inny przykład:

signal3=Plot[t^2 Exp[-t^2],{t,-5,5},PlotRange->{-0.5,0.5},  PlotLabel-> "sygnał"]

(OverHat[x3])[ω_]:=FourierTransform[t^2 Exp[-t^2],t,ω]
(OverHat[x3])[ω]

transx3=Plot[-(((E^(-((ω^2)/4))) (-2+(ω^2)))/(4 (Sqrt[2]))),{ω,-10,10}, PlotRange->{-0.2, 0.5}, PlotLabel-> "transformata Fouriera sygnału"]

Poniżej przedstawiony sygnał i jego transformata Fouriera

GraphicsRow[{signal3,transx3}]

Uwaga: należy zauważyć, że w powyższych przykładach pokazane zostały funkcje x(t) rzeczywiste i parzyste

Ponadto transformacja Fouriera funkcji okresowej, będzie dyskretna, w przykładzie poniżej dla funkcji sinus otrzymujemy deltę Diraca:

signal4=Plot[Sin[t],{t,-5,5},PlotRange->{-1.5,1.5},  PlotLabel-> "sygnał"]

(OverHat[x4])[ω_]:=FourierTransform[Sin[t],t,ω]
(OverHat[x4])[ω]

Pewne konwencje....9

x(t)=(∫_(-∞)^∞)(OverHat[x])(f) (e^(i2πtf)) df,                   (OverHat[x])(f)=(∫_(-∞)^∞)x(t)(e^(-i2πft)) dt      Używana na wykładach
x(t)=(∫_(-∞)^∞)(OverHat[x])(f) (e^(-i2πtf)) df,                  (OverHat[x])(f)=(∫_(-∞)^∞)x(t)(e^(i2πft)) dt   
x(t)=(1/(2π))(∫_(-∞)^∞)(OverHat[x])(ω) (e^(itω)) dω,                (OverHat[x])(ω)=(∫_(-∞)^∞)x(t)(e^(-iωt)) dt       Używana na wykładach
x(t)=(1/(2π))(∫_(-∞)^∞)(OverHat[x])(ω) (e^(-itω)) dω,               (OverHat[x])(ω)=(∫_(-∞)^∞)x(t)(e^(iωt)) dt   
x(t)=(1/(Sqrt[2π]))(∫_(-∞)^∞)(OverHat[x])(ω) (e^(itω)) dω,              (OverHat[x])(ω)=(1/(Sqrt[2π]))(∫_(-∞)^∞)x(t)(e^(-iωt)) dt   
x(t)=(1/(Sqrt[2π]))(∫_(-∞)^∞)(OverHat[x])(ω) (e^(-itω)) dω,             (OverHat[x])(ω)=(1/(Sqrt[2π]))(∫_(-∞)^∞)x(t)(e^(iωt)) dt   Używana domyślnie w Mathematice

The Fourier transform of a function f(t) is by default defined to be (1/(Sqrt[2π]))(∫_(-∞)^∞)f(t) (e^(iωt))dt. 
With the setting FourierParameters->{a, b} the Fourier transform computed by FourierTransform is (Sqrt[((|b|)/(((2π))^(1-a)))])(∫_(-∞)^∞)f(t) (e^(ibωt))dt. 
Some common choices for {a, b} are: 
{0, 1} (default; modern physics), 
{1, -1} (pure mathematics; systems engineering), 
{-1, 1} (classical physics), 
{0, -2 Pi} (signal processing).

Options[FourierTransform]

Własności transformat Fouriera: przesunięcie i skalowanie w dziedzinie czasu i częstotliwości

Jeżeli x(t) to sygnał i (OverHat[x])(ω) jest transformatą Fouriera tego sygnału to zachodzi:                  
x(t-(Subscript[t, 0]))            (Overscript[→, F])      (OverHat[x])(ω)(e^(-(Subscript[iωt, 0])))    Przesunięcie w czasie
x(t) (e^(- (Subscript[iω, 0])t))        (Overscript[→, F])       (OverHat[x])(ω+(Subscript[ω, 0]))    Przesunięcie w częstotliwości
x(t) cos((Subscript[ω, 0])t)    (Overscript[→, F])  (1/2)( (OverHat[x])(ω+(Subscript[ω, 0]))+(OverHat[x])(ω-(Subscript[ω, 0])) )   Modulacja sygnału - Pomnożenie sygnału harmonicznego przez sygnał x(t) powoduje rozdzielenie widma na dwie części przemieszczone w lewo i prawo o wartość (Subscript[ω, 0]). Operacja ta nazywana jest modulacją. Sygnałem modulowanym jest sygnał harmoniczny, a sygnałem modulującym sygnał x(t).
x(at)               (Overscript[→, F])      (1/( |a|))(OverHat[x])((ω/a))        Skalowanie w czasie
(1/(|a|))x((t/a))            (Overscript[→, F])       (OverHat[x])(a ω)       Skalowanie w częstotliwości

Uwaga do konwencji: W zależności od tego jaką przyjmiemy konwencję możemy mieć zmiany w znakach przy przesunięciach.

Przesunięcie w czasie: na rysunkach poniżej przedstawiony jest sygnał oraz część rzeczywista i urojona transformaty Fouriera tego sygnału; poniżej ten sam sygnał przesunięty w czasie, oraz jedo transformata Fouriera.

Needs["FourierSeries`"]

x[t_]:=Exp[-t^2]
FourierTransform[x[t],t,ω]
FourierTransform[x[t-1],t,ω]

ft[ω_]:=NFourierTransform[x[t],t,ω]
ftprzes[ω_]:=NFourierTransform[x[t-1],t,ω]

sygnał:=Plot[x[t],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "sygnał"]
retransformata:=Plot[Re[ft[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata:=Plot[Im[ft[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]]"]
sygnałprzes:=Plot[x[t-1],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "przesumięcie sygnału"]
retransformataprzes:=Plot[Re[ftprzes[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]] po przesnięciu w czasie"]
imtransformataprzes:=Plot[Im[ftprzes[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]] po przesunięciu w czasie"]

GraphicsGrid[{{sygnał, retransformata,imtransformata},{sygnałprzes, retransformataprzes,imtransformataprzes}}]

Przesunięcie w dziedzinie częstotliwości: na rysunkach poniżej przedstawiony jest sygnał oraz część rzeczywista i urojona transformaty Fouriera tego sygnału; poniżej ten sam sygnał, którego transformata Fouriera jest przesunięta.

x2[t_]:=Exp[-t^2]
FourierTransform[x2[t],t,ω]
FourierTransform[Exp[I Pi/2 t] x2[t],t,ω]
ft2[ω_]:=NFourierTransform[x2[t],t,ω]
ftprzes2[ω_]:=NFourierTransform[Exp[I Pi/2 t] x2[t],t,ω]

sygnał2:=Plot[x2[t],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "sygnał"]
retransformata2:=Plot[Re[ft2[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata2:=Plot[Im[ft2[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]]"]
sygnałprzes2:=Plot[Re[Exp[I Pi/2 t] x2[t]],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "sygnał*\!\(\*SuperscriptBox[\(E\), \(i\\ π\\ t/2\)]\)"]
retransformataprzes2:=Plot[Re[ftprzes2[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]] przesunięty"]
imtransformataprzes2:=Plot[Im[ftprzes2[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]] przesunięty"]

GraphicsGrid[{{sygnał2, retransformata2,imtransformata2},{sygnałprzes2, retransformataprzes2,imtransformataprzes2}}]

Skalowanie w dziedzinie czasu: na rysunkach poniżej przedstawiony jest sygnał oraz część rzeczywista i urojona transformaty Fouriera tego sygnału; poniżej ten sam sygnał przeskalowany w czasie.

x3[t_]:=Exp[-t^2]
FourierTransform[x3[t],t,ω]
FourierTransform[x3[2 t],t,ω]
ft3[ω_]:=NFourierTransform[x3[t],t,ω]
ftskal3[ω_]:=NFourierTransform[x3[2 t],t,ω]

sygnał3:=Plot[x3[t],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "sygnał"]
retransformata3:=Plot[Re[ft3[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata3:=Plot[Im[ft3[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]]"]
sygnałskal3:=Plot[x3[2 t],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "przeskalowany sygnał"]
retransformataskal3:=Plot[Re[ftskal3[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]] po skalowaniu"]
imtransformataskal3:=Plot[Im[ftskal3[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]] po skalowaniu"]

GraphicsGrid[{{sygnał3, retransformata3,imtransformata3},{sygnałskal3, retransformataskal3,imtransformataskal3}}]

Skalowanie w dziedzinie częstotliwości: na rysunkach poniżej przedstawiony jest sygnał oraz część rzeczywista i urojona transformaty Fouriera tego sygnału; poniżej ten sam sygnał przeskalowany w dziedzinie częstotliwości.

x4[t_]:=Exp[-t^2]
FourierTransform[x4[t],t,ω]
FourierTransform[x4[t/2]/2,t,ω]
ft4[ω_]:=NFourierTransform[x4[t],t,ω]
ftskal4[ω_]:=NFourierTransform[x4[t/2]/2,t,ω]

sygnał4:=Plot[x4[t],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "sygnał"]
retransformata4:=Plot[Re[ft4[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata4:=Plot[Im[ft4[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]]"]
sygnałskal4:=Plot[x4[t/2]/2,{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "skalowanie sygnału"]
retransformataskal4:=Plot[Re[ftskal4[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]] po skalowaniu"]
imtransformataskal4:=Plot[Im[ftskal4[ω]],{ω,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]] po skalowaniu"]

GraphicsGrid[{{sygnał4, retransformata4,imtransformata4},{sygnałskal4, retransformataskal4,imtransformataskal4}}]

Własności symetrii transformat Fouriera: sygnały parzyste i nieparzyste, rzeczywiste i urojone

jeżeli sygnał x(t) jest. . .       to transformata (OverHat[x])(ω) jest . . .
parzysty x(t) = x(-t)                parzysta
nieparzysty x(t) = -x(-t)           nieparzysta
rzeczywisty                           (OverHat[x])(-ω)=(OverBar[(OverHat[x])(ω)])
urojony                                (OverHat[x])(-ω)=- (OverBar[(OverHat[x])(ω)])

z czterech powyższych własności wynikają cztery poniższe:
rzeczywisty i parzysty              rzeczywista i parzysta
rzeczywisty i nieparzysty          urojona i nieparzysta
urojony i parzysty                   urojona i parzysta
urojony i nieparzysty               rzeczywista i nieparzysta

Poniżej pokazano transformatę Fouriera: jej część rzeczywitą i urojoną sygnału rzeczywistego nieparzystego. Na wykresie widać, że transtormata Fouriera takiego sygnału jest urojona i nieparzysta.

x5[t_]:=t Exp[-t^2]
FourierTransform[x5[t],t,w]
ft5[w_]:=NFourierTransform[x5[t],t,w]

sygnał5:=Plot[x5[t],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "sygnał"]
retransformata5:=Plot[Re[ft5[w]],{w,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata5:=Plot[Im[ft5[w]],{w,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]]"]

GraphicsRow[{sygnał5, retransformata5,imtransformata5}]

Poniżej pokazano transformatę Fouriera: jej część rzeczywitą i urojoną sygnału urojonego parzystego. Na wykresach widać, że transtormata Fouriera takiego sygnału jest urojona i parzysta.

x6[t_]:= I Exp[-t^2]
FourierTransform[x6[t],t,ω]
ft6[ω_]:=NFourierTransform[x6[t],t,ω]

sygnał6:=Plot[Im[x6[t]],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "Im[sygnał]"]
retransformata6:=Plot[Re[ft6[ω]],{ω,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata6:=Plot[Im[ft6[ω]],{ω,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "Im[(OverHat[x])[ω]]"]

GraphicsRow[{sygnał6, retransformata6,imtransformata6}]

Poniżej pokazano transformatę Fouriera: jej część rzeczywitą i urojoną sygnału urojonego nieparzystego. Na wykresie widać, że transtormata Fouriera takiego sygnału jest rzeczywista i nieparzysta.

x7[t_]:= I t Exp[-t^2]
FourierTransform[x7[t],t,w]
ft7[w_]:=NFourierTransform[x7[t],t,w]

sygnał7:=Plot[Im[x7[t]],{t,-5,5},PlotRange->{-0.5,1.5},  PlotLabel-> "Im[sygnał]"]
retransformata7:=Plot[Re[ft7[w]],{w,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Re[(OverHat[x])[ω]]"]
imtransformata7:=Plot[Im[ft7[w]],{w,-5,5},PlotRange->{-0.5,1},  PlotLabel-> "Im[(OverHat[x])[ω]]"]

GraphicsRow[{sygnał7, retransformata7,imtransformata7}]

Zasada nieoznaczoności

Na rysunku poniżej pokazane są trzy Gaussiany, parametr δt odpowiada za przeskalownie funkcji:

f[t_,δt_]:=Exp[-(t/δt)^2]
Plot[{f[t,1/4],f[t,1],f[t,4]},{t,-10,10},PlotRange->{0,1},PlotStyle->{Hue[0],Hue[.4],Hue[.6]}]

Poniżej pokazany są transformaty Fouriera funkcji powyżej, jakie są wnioski?

ft[s_,δt_]:=FourierTransform[f[t,δt],t,s]

Plot[{ft[s,1/4],ft[s,1],ft[s,4]},{s,-12,12},PlotRange->{0,3},PlotStyle->{Hue[0],Hue[.4],Hue[.6]}]

W mechanice kwantowej zasada nieoznaczoności Heisenberga mówi o tym, że cząstka nie może mieć jednoczesnie dobrze określonych np. położenia i pędu: (Subscript[ΔxΔp, x]) ≥ (h/(2 π)), przy czym Δ odpowiada wariancji rozkładu prawdopodobieństwa wokół średniej. W analizie sygnału iloczyn wariancji w czasie (Subscript[Δ, t]^2) i w częstości (Subscript[Δ, ω]^2) spełnia warunek:
 (Subscript[Δ, t]^2)(Subscript[Δ, ω]^2)≥ (1/4), gdzie
 (Subscript[Δ, t]^2)=(((∫_(-∞)^∞)(t^2)||x(t)((||)^2)dt)/((∫_(-∞)^∞)||x(t)((||)^2)dt)),  (Subscript[Δ, ω]^2)=(((∫_(-∞)^∞)(ω^2)||(OverHat[x])(ω)((||)^2)dω)/((∫_(-∞)^∞)||(OverHat[x])(ω)((||)^2)dω))

Pytania na kolokwium

1. Proszę podać wzory na przekształcenia Fouriera - p.p. 
2. Proszę podać własności transformaty Fouriera ze względu na przesunięcie i skalowanie w dziedzinie czasu i częstotliwości - p.p.
3. Proszę podać i pokazać (wyprowadzić) własności transformaty Fouriera ze względu na przesunięcie i skalowanie w dziedzinie czasu i częstotliwości - p.r.
4. Proszę podać własności symetrii transformaty Fouriera. - p.p 
5. Na czym polega zasada nieoznaczoności? - p.r.

Ćwiczenia na laboratorium

Ćwiczenie nr 7 - 3p.
Dane są funkcje ciągłe nieokresowe
(Subscript[f, 1])=({{{, ({{cos(6x),, x∈<-π,π>}, {0,, w przeciwnym wypadku}})}})
(Subscript[f, 2])=({{{, ({{cos(2x),, x∈<-3π,3π>}, {0,, w przeciwnym wypadku}})}})
(Subscript[f, 3])=({{{, ({{cos(x),, x∈<-6π,6π>}, {0,, w przeciwnym wypadku}})}})
Należy:
1. Znaleźć transformaty Fouriera powyższych funkcji.
2. Przedstawić na wykresach powyższe funkcje oraz ich transformaty Fouriera.
3. Zauważ relację pomiędzy koncentracją widma wokół określonej częstości, a skalowaniem w czasie.
4. Opisz krótko, jedną funkcję Mathematici, którą zastosowałeś/aś w ćwiczeniu; podaj inny, własny przykład jej użycia.