fft of a signal

조회 수: 5 (최근 30일)
Tina
Tina 2013년 3월 29일
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?

답변 (2개)

Wayne King
Wayne King 2013년 3월 29일
편집: Wayne King 2013년 3월 29일
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
Tina
Tina 2013년 3월 29일
Thanks but my signal is not something like that you put as x above. My signal is a solution to and ODE, so I dont have the formula for my signal, I just have a matrix now.
Wayne King
Wayne King 2013년 3월 29일
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
Azzi Abdelmalek 2013년 3월 29일
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))

카테고리

Help CenterFile Exchange에서 Spectral Measurements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by