# fft of a signal

11 views (last 30 days)
Tina on 29 Mar 2013
Hello;
I know I have to use fft for getting the fourier transform of a signal, but I am a bit confused here.
I want to have a plot which shows the amplitude of the fourier transform of a signal vs. the frequency. My signal is a 100x1 matrix, and my sampling frequency was 40Hz. What should I do now?

Wayne King on 29 Mar 2013
Edited: Wayne King on 29 Mar 2013
You have to create a meaningful frequency vector to go along with your Fourier transform.
The spacing for the DFT (discrete Fourier transform) frequencies is Fs/N where N is the length and Fs is the sampling frequency.
Fs = 40;
t = 0:1/Fs:4-1/Fs;
x = cos(2*pi*10*t)+randn(size(t));
xdft = fft(x);
Now to create the frequency vector.
f = 0:Fs/length(x):Fs/2;
You'll see that the length of f is not equal to the length of xdft.
That's because xdft contains both positive and "negative" frequencies.
We only need 1/2 of xdft because the signal is real-valued.
xdft = xdft(1:length(x)/2+1);
plot(f,abs(xdft)); xlabel('Hz');
##### 2 CommentsShowHide 1 older comment
Wayne King on 29 Mar 2013
It does not matter, since I don't have your signal, I made an example for you. If you data is sampled at 40 Hz, then you construct the frequency vector the same way.

Azzi Abdelmalek on 29 Mar 2013
Example
fs=40
t=0:1/fs:99/fs;
y=rand(1,100);
Yk=fft(y);
N=numel(y)
f=fs*(0:(N-1))/N % frequencies
stem(f,abs(Yk))

### Categories

Find more on Discrete Fourier and Cosine Transforms in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by