Przekształcenie szpitala w spółkę. Czy czeka nas proces masowych przekształceń szpitali?
Analiza numerycznatarnowski/old/student/201213l/an_w10.pdf · 2016-10-04 · Analiza numeryczna...
Transcript of Analiza numerycznatarnowski/old/student/201213l/an_w10.pdf · 2016-10-04 · Analiza numeryczna...
Analiza numeryczna Kurs INP002009W
Wykład 10
Interpolacja trygonometryczna –
szybkie przekształcenie Fouriera
Karol Tarnowski
[email protected] A-1 p.223
2/22
Plan wykładu
• Szereg Fouriera
• Zespolony szereg Fouriera
• Dyskretna transformata Fouriera
• Szybka transformata Fouriera
3/22
Wielomian interpolujący
Jeśli liczby x0, x1, …, xn są parami różne to istnieje
dokładnie jeden wielomian
taki, że p(xi) = yi (0 ≤ i ≤ n).
Wielomiany nie są odpowiednie do opisu zjawisk
periodycznych.
n
p
5/22
Szereg Fouriera
Dla prostoty załóżmy, że rozważana funkcja f ma
okres T = 2p. Wtedy funkcjami bazowymi mogą być
• 1, cos(t), cos(2t), …
• 0, sin(t), sin(2t), …
01
1( ) cos sin
2k k
k
f t a a kt b kt
p
pp
1
cosk
a f t kt dt p
pp
1
sink
b f t kt dt
9/22
Zespolone szeregi Fouriera
Wzór Eulera
Szereg Fouriera funkcji okresowej o wartościach
zespolonych dany jest wzorem
exp cos sini i
p e 1 0i
( ) e ,ikt
kk
f t c
p
pp
1
e .2
ikt
kc f t dt
10/22
Zespolone szeregi Fouriera Funkcja rzeczywista
Jeśli f jest funkcją rzeczywistą to szereg
jest częścią rzeczywistą szeregu zespolonego
01
1( ) cos sin
2k k
k
f t a a kt b kt
( ) eikt
kk
f t c
p
pp
1 1
cos sin2 2
k k kc f t kt i kt dt a ib
p
pp
1
cos , k k k
a f t kt dt a a
p
pp
0 0
1sin , , 0
k k kb f t kt dt b b b b
11/22
Zespolone szeregi Fouriera Funkcja rzeczywista
Dowód.
Część rzeczywista:
Część urojona:
1
dla 02
k k kc a ib k
1
e cos sin2
ikt
k k kk k
c a ib kt i kt
( ) eikt
kk
f t c
1
sin cos2
k kk
a kt b kt
1
cos sin2
k kk
a kt b kt
12/22
Zespolone szeregi Fouriera Funkcja rzeczywista
Część rzeczywista:
0 0
1
01
01
1cos sin
2
1cos0 sin0
2
1cos cos sin sin
2
1 1cos cos sin sin
2 2
1cos sin
2
k kk
k k k kk
k k k kk
k kk
a kt b kt
a t b t
a kt a kt b kt b kt
a a kt a kt b kt b kt
a a kt b kt
13/22
Zespolone szeregi Fouriera Funkcja rzeczywista
Część urojona:
0 0
1
01
0
1sin cos
2
1sin0 cos0
2
1sin sin cos cos
2
1 1sin sin cos cos
2 2
10 0
2
k kk
k k k kk
k k k kk
a kt b kt
a t b t
a kt a kt b kt b kt
b a kt a kt b kt b kt
b
14/22
Zespolone szeregi Fouriera
Dla funkcji o okresie T
gdzie w = 2p/T.
w
( ) eik t
kk
f t c
w
/2
/2
1e
T
ik t
k
T
c f t dtT
15/22
Transformata Fouriera
Ograniczając szereg do przedziału [−T/2, T/2],
a następnie wykonując przejście graniczne T
można zapisać:
ww wp
1
( ) e2
i tf t c d
wwp
1
e2
i tc f t dt
16/22
Dyskretna transformata Fouriera (DFT)
Potraktujmy funkcję f(t) jako zależną od czasu
wielkość fizyczną. Przyjmijmy, że pomiarów
dokonywano w czasie od t = 0 do t = T
w równoodległych chwilach czasu z odstępem
t = T/(N−1).
Odpowiednia częstość w przybiera także wartości
dyskretne, z odstępem n = 2p/T.
Wprowadźmy także notację:
• f(t) = f(t = nt) = fn,
• c(w) = c(w = kn) = ck.
17/22
Dyskretna transformata Fouriera (DFT)
p
1
2 /
0
1e
Ni nk N
n kk
f cN
p p
p
1 12 / 2 /
0 0
12 /
0
1 1e e
1, =e
nN Nk
i nk N i N
k n nn n
Nn
k i N
nn
c f fN N
fN
2O N
18/22
Szybka transformata Fouriera (FFT)
Załóżmy, że N = 2M
p
p p
p
12 /
0
/2 1 /2 12 2 / 2 2 1 /
2 2 10 0
2 /
e
e e
e
Ni nk N
k nn
N Ni n k N i n k N
n nn n
i k N
k k
c f
f f
x y
p
/2 1
2 2 /
20
eN
i n k N
k nn
x f p
/2 1
2 2 /
2 10
eN
i n k N
k nn
y f
2logO N N
19/22
Szybka transformata Fouriera (FFT) Przykład
Fs = 1000; % Częstotliwość próbkowania
T = 1/Fs; % Czas próbkowania
L = 1000; % Liczba punktów w próbce
t = (0:L-1)*T; %
% suma sygnałów o częstotliwości 50 Hz oraz 120 Hz
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % sygnał + szum
figure(1)
subplot(2,1,1),plot(Fs*t,y)
title('Sygnal zanieczyszczony szumem')
subplot(2,1,2),plot(Fs*t(1:100),y(1:100))
title('Sygnal zanieczyszczony szumem')
xlabel('czas [ms]')
21/22
Szybka transformata Fouriera (FFT) Przykład
figure(2)
Y = fft(y)/L;
f = Fs/2*linspace(0,1,1000/2+1);
subplot(2,1,1),plot(f,2*abs(Y(1:1000/2+1)))
title('Widmo amplitudowe'), ylabel('|Y(f)|')
subplot(2,1,2),plot(f,2*abs(Y(1:1000/2+1)))
axis([0 140 0 1.1])
xlabel('czestotliwosc [Hz]'), ylabel('|Y(f)|')