W przypadku gdy, funkcja (zjawisko), którą się zajmujemy jest okresowa czyli
Zadanie interpolacji trygonometrycznej polega na znalezieniu dla danej funkcji
Zadanie te rozwiązuje się podobnie jak poprzednie rozwiązując układ
Załóżmy, że węzły interpolacji są równoodległe czyli
Ze względu na to, że funkcje
Jak wiadomo, wielomian
Powyższy wzór nie jest wykorzystywany do obliczeń. Zazwyczaj stosuje się Szybką Transformatę Fouriera (FFT). Algorytm opracowany przez Cooleya i Tookeya w 1965 pominę. Koszt podejścia klasycznego wymaga
Pewnym problemem stosowania interpolacji trygonometrycznej jest to, że funkcja jest okresowa. To znaczy zakładamy, że
Mathematica
Interpolacja trygonometryczna
Zajmę się głównie szybką transformatą Fouriera. Funkcja Fourier służy do wyliczenia FFT z zadanego przebiegu danych. Najprostsze jeż użycie będzie takie:
Odwrotna transformata Fouriera:
Teraz jakiś przebieg okresowy.
Parametr err
to zakres zaburzeń.

Jak zinterpretować ten wykres? Czemu są cztery ekstrema (piki)?
Można również skorzystać z funkcji Periodogram.

Jak zinterpretować ten rezultat?
Jak na podstawie powyższych wykresów zidentyfikować częstości przebiegu?
Hint1: Wygenerować jeden okres przebiegu o częstości 1 Hz i pokazać jego transformatę Fouriera oraz periodogram.
Hint2: Funkcja periodogram ma dodatkowy parametr SampleRate. Mówi on ile próbek na jednostkę czasu wykonano. Używany jest do skalowania osi
.
Matlab
Interpolacja trygonometryczna
Podstawowym narzędziem jest funkcja fft:
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sample time
L = 1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a~50 Hz sinusoid and a~120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')

NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

Zwracam uwagę, że pokazane rozwiązanie sugeruje, żeby długość ciągu danych była potęgą dwójki (polecenie: NFFT = 2^nextpow2(L);
) czego nie wymaga Mathematica.
Zadania
Użyć interpolacji trygonometrycznej do znalezienia okresu zmienności tygodniowego (lub miesięcznego) wykresu temperatury. Wyglądać może on jakoś tak:
Można skorzystać z tych danych.
Przed rozpoczęciem tego zadania sugeruję zapoznanie się z informacjami zawartymi w rozdziale o Jupyterze oraz przeanalizowanie przykładowych notatników na temat wczytywania danych, eliminacji błędnych danych i szybkiej transformaty Fouriera.
Mając transformatę Fouriera warto spróbować przeprowadzić „naiwną, ręczną filtrację danych", która polegać będzie na wyzerowani nieistotnych składowych transformaty i po zostawieniu tylko tych które wnoszą istotny wkład w przebieg oraz porównaniu przebiegów.
Opisać od czego zależy rozdzielczość (zdolność do identyfikowania w przebiegu złożonym składowych o bardzo bliskich częstotliwościach) szybkiej transformaty Fouriera. Można posiłkować się notatnikiem Jupyter.
Zwrócić uwagę na znaczenie twierdzenia Shannona (o próbkowaniu) i wytłumaczyć na co mają wpływ:
- częstotliwość próbkowania,
- czas próbkowania.