- FFT Calculation and Plotting: The magnitude of the FFT should be plotted in the frequency domain rather than attempting to plot the FFT result directly against the time axis.
- Frequency Axis: The correct frequency axis for plotting the FFT result needs to be constructed.
- Time Shifting: Ensure that the time shifts are correctly applied and interpreted.

# How to plot simple fft of a shifted time series?

1 view (last 30 days)

Show older comments

I am trying to understand basic fft functions of a shifted time series and my graphs are not appearing as I expect them to:

dt = 0.01; % time interval N_ts = 256; % number of time data Td_ts = 2.*(N_ts-1)*dt; % duration t_ts = 0:dt:Td_ts; % define time axis x_ts = zeros(1, length(t_ts)); %Initialize x_ts2 = zeros(1, length(t_ts)); %Initialize t0 = 100; t1 = 156; x_ts(t0)= 1/dt; % time shift of x(t+t0) x_ts2(t1) = 1/dt; % time shift of x(t-t0)

nfft_ts = 511; % Length of FFT X2_ts = fft(x_ts2,nfft_ts)*dt; % Take fft, padding with zeros so that Length(x) is equal to nfft

amp2 = abs(X2_ts); % Take the magnitude of fft of x phase2 = angle(X2_ts); % Take angle

figure(5); plot(t_ts,X2_ts); title('Built-In FFT'); xlabel('Time (s)'); ylabel('X(t)');

##### 0 Comments

### Answers (1)

Pratik
on 26 Jun 2024

Hi Kelsey,

To plot the FFT of a shifted time series and understand its behavior, it is important to ensure that the time and frequency domains are correctly handled. The current code has a few issues that need to be addressed:

Here is the corrected and complete code for plotting the FFT of a shifted time series:

dt = 0.01; % time interval

N_ts = 256; % number of time data

Td_ts = (N_ts-1)*dt; % duration

t_ts = 0:dt:Td_ts; % define time axis

x_ts = zeros(1, length(t_ts)); % Initialize x_ts

x_ts2 = zeros(1, length(t_ts)); % Initialize x_ts2

t0 = 100; % Index for time shift of x(t+t0)

t1 = 156; % Index for time shift of x(t-t0)

x_ts(t0) = 1/dt; % time shift of x(t+t0)

x_ts2(t1) = 1/dt; % time shift of x(t-t0)

nfft_ts = 511; % Length of FFT

X2_ts = fft(x_ts2, nfft_ts) * dt; % Take fft, padding with zeros so that Length(x) is equal to nfft

amp2 = abs(X2_ts); % Take the magnitude of fft of x

phase2 = angle(X2_ts); % Take angle

% Frequency axis

f_ts = (0:nfft_ts-1)/(nfft_ts*dt); % Frequency axis in Hz

% Plotting the magnitude of the FFT

figure;

plot(f_ts, amp2, 'LineWidth', 1.5);

title('Magnitude of FFT of Shifted Time Series');

xlabel('Frequency (Hz)');

ylabel('Magnitude');

grid on;

% Plotting the phase of the FFT

figure;

plot(f_ts, phase2, 'LineWidth', 1.5);

title('Phase of FFT of Shifted Time Series');

xlabel('Frequency (Hz)');

ylabel('Phase (radians)');

grid on;

I hope this helps!

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!