How to perform FFT analysis for a sinusoidal wave.
2 次查看(过去 30 天)
显示 更早的评论
Hi,
I have recorded flame. Due to buoyancy effect flame fluctuates by time. I have plotted the flame height vs time graph (Its looks like sinusoidal wave). Now how to convert this graph into amplitude (Y) vs frequency (X_Hz) graph by using FFT Matlab code.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/223168/image.jpeg)
回答(1 个)
Chirag Nighut
2019-6-10
Considering that X is the array of the flame heights at different time values and L is the number of samples of the data,
Fx = fft(X);
should give you the Discrete Fourier transform of X (Y)
Since the calculated FFT will be symmetric such that the magnitude of only the first half points are unique (and the rest are symmetrically redundant), the main idea is to display only half of the FFT spectrum. Remember that multiplying by 2 is necessary as you are adding the magnitude in the negative and positive frequency domain. The following code illustrates this point:
P = abs(Fx/L);
Y = P(1:L/2+1);
Y(2:end-1) = 2*Y(2:end-1);
Now we can plot the graph of Y ie. amplitude of the Fourier Transform w.r.t to the frequency X_Hz. Note that Fs is the sampling frequency that you decide.
X_Hz = Fs*(0:(L/2))/L;
plot(X_Hz, Y)
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (X_Hz)')
ylabel('|Y(f)|')
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fourier Analysis and Filtering 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!