9.2 Przykładowa analiza miesiaca

Czytanie danych

temperatura = czytaj_historie("dane.csv");

Funkcja czytaj_histore() utworzona została na podstawie kodu przygotowanego przez Import Tool.

Teraz zrobimy FFT

  1. Liczba pomiarów L (Co robi funkcja size())
L = size(temperatura, 1)
L = 743

Z różnych względów lepsza byłaby parzysta (Czemu?) liczba pomiarów; więc zrobimy tak:

temperatura(end,:) = [];
L = size(temperatura, 1)
L = 742

Częstotliwość próbkowania.

Musimy odejść od herców, bo to trochę bez sensu, ale możemy powiedzieć, że próbki były pobierane co godzinę, więc na jednostkę czasu (dobę) pobrano ich 24.

Poniższe zmienne są bardzo istotne, bo używając ich będziemy skalowali Transformatę Fouriera. Można używać innych nazw, ale konsekwentnie.

Fs = 24; % Częstotliwosć próbkowania

Nasz sygnał wygląda tak:

plot(temperatura.last_changed, temperatura.state)

Przebieg temperatury
Przebieg temperatury

Teraz transformata Fouriera.

Funkcja fftshift() tak przeorganizowuje dane, że częstotliwość zero jest w środku.

Y = fft(temperatura.state);
plot(abs(fftshift(Y)))

Transformata Fouriera
Transformata Fouriera

Teraz normalizacja i częstotliwości

P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
f = Fs*(0:(L/2))/L;

I wreszcie wykres

figure
stem(f(f<3),P1(f<3),'r')
title("Współczynniki Fouriera")
ylabel("Amplituda")
xlabel("razy na dobę")

Współczynniki ograniczone do 3
Współczynniki ograniczone do 3

Poprzedni
Następny