This is stemming from a forecasting problem, but my fundamental assumption about FFT appears to be incorrect. Below, I'm generating a pure sinusoid at 5Hz for 5 seconds (top). The amplitude of the FFT (padded, middle) confirms the dominant frequency. However, I'm unclear why phase at 5Hz would not equal 0 using angle() (bottom)? The ultimate goal is to find the dominant frequency and phase of a noisy signal using FFT, then forecast using a pure, phase-shifted sinusoid.
Fs = 125;plotS = 5;t = linspace(0,plotS,plotS*Fs);fmod = 5;pdelay = 0;X = sin((2*pi*fmod*t) + pdelay);close allff(800,600);subplot(311);plot(t,X);hold on;xlabel('Time (s)');ylabel('Amplitude');L = numel(t);nPad = 5;n = (2^nextpow2(L)) * nPad;Y = fft(X,n);f = Fs*(0:(n/2))/n;P = abs(Y/n).^2;A = angle(Y);gridsubplot(312);plot(f,P(1:n/2+1))xlabel('Frequency (f)')ylabel('|P(f)|^2')xlim([0 10]);gridsubplot(313);plot(f,A(1:n/2+1));xlabel('Frequency (f)')ylabel('Phase (rad)');xlim([fmod-2 fmod+2]);grid
Best Answer