# How to determine and adjust the x axis after taking the 1D FFT?

15 views (last 30 days)

Show older comments

##### 0 Comments

### Accepted Answer

Star Strider
on 19 Dec 2022

I usually do something like this —

t = linspace(0, 100, 10000); % Time Vector

s = sum(sin([1 5 10 15 20 25 30 35 40 45].'*2*pi*t)); % Signal (Here A Vector)

figure

plot(t, s)

grid

xlabel('Time')

ylabel('Amplitude')

L = numel(t); % Length Of The Signal Vector

dt = t(2)-t(1); % Sampling Time Increment

Fs = 1/dt; % Sampling Frequency

Fn = Fs/2; % Nyquist Frequency

NFFT = 2^nextpow2(L); % For Efficiency

FTs = fft(s(:).*hamming(L),NFFT)/L; % Fourier Transform (Windowing Not Required, Shown For Information)

Fv = linspace(0, 1, NFFT/2+1)*Fn; % Frequency Vector For One-Sided Fourier Transform Plot

Iv = 1:numel(Fv); % Index Vector (For Convenience)

figure

plot(Fv, abs(FTs(Iv))*2) % Multiply By 2 To Correct For Energy Division Between Positive And Negative Frequencies

grid

xlabel('Frequency (Units)')

ylabel('Magnitude (Units)')

I am not certain what you are doing, however something like this should work.

.

##### 4 Comments

### More Answers (1)

Paul
on 19 Dec 2022

Hi L'O.G.

Let NFFT = numel(Y)

Let Ts = dt = t(2) - t(1) and Fs = 1/Ts.

Then the frequency vector that corresponds to the values in Y is given by

f = (0: (NFFT-1))/NFFT*C

where the proportionality constant C is often one of:

C = 1 % cycle/sample

C = 2*pi % rad/sample

C = Fs % cycle/sec, i.e. Hz

C = 2*pi/Ts % = 2*pi*Fs rad/sec.

f = (-(NFFT-1)/2 : (NFFT-1)/2)/NFFT*C % N odd

f = ((-NFFT/2) : (NFFT/2-1))/NFFT*C % N even

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!