%% FFT
%% Prosty przykład transformaty Fouriera
% Liczba pomiarów

L  = 8;

% Częstotliwość próbkowania

Fs = 8; % 8 razy na sekundę

% Okres próbkowania

T  = 1/Fs;

% Chwile, w których dokonujemy pomiarów

t  = (0:L-1)*T;

% Sygnał

f = 1; % częstość 1 Hz
a = 1; % amplituda sygnału
X  = a*cos(2*pi*f*t);% + a*sin(2*pi*2*f*t) + 3;

%
% Wykres

figure
plot(t,X)
title('Przykładowy sygnał')
xlabel('t [s]')
ylabel('X(t)')
saveas(gcf,"w05.png")

%
% Transformata Fouriera

Y  = fft(X)

% W ogólnym przypadku wartości transformaty Fouriera są liczbami zespolonymi

plot(abs(Y))

% Na osi X jest numer współczynnika. Widmo jest symetryczne.
%
% Bardzo często dokonuje sięodbicia widma fft funkcją fftshift()

plot(abs(fftshift(Y)))

%
% Teraz transformatę trzeba unormować:
% Wartości widma dzielimy przez liczbę próbek (L)

P2 = abs(Y/L);

%
% Widmo jednostronne

P1 = P2(1:L/2+1)

%
% Dalszy ciąg normowania (jest inne dla wartości średniej, inne dla współczynników, dzielone przez 2): poza zerowym współczynnikiem musimy pomnożyć przez dwa

P1(2:end-1) = 2*P1(2:end-1)

%
% Teraz powinniśmy przypisać poszczególnym numerkom widma ich częstotliwości
% Generacja wartości kolejnych częstotliwości

f = Fs*(0:(L/2))/L
figure
stem(f,P1,'r')
title("Współczynniki Fouriera")
ylabel("Amplituda")
xlabel("Hz")
saveas(gcf,"w06.png")