Error getting Fourier transform of a 1d signal

1 回表示 (過去 30 日間)
Anshuman Pal
Anshuman Pal 2020 年 3 月 2 日
コメント済み: Star Strider 2020 年 3 月 5 日
Hello,
I have an almost-sinusoidal signal (see attached file), which I believe is composed of a mixture of maybe 2 (or 3) Fourier modes:
I wanted to verify this by plotting its Fourier transform. I expected a flat signal with a bunch of peaks at the signal harmonics. However, using fft() on the signal gives me a 2d plot that makes absolutely no sense to me. Can someone please help me to understand what is going on?
  4 件のコメント
Star Strider
Star Strider 2020 年 3 月 2 日
Remember that you need to plot the absolute value (use the abs function) of the fresult fo the fft.
Also, since the signal has a D-C offset, subtract the mean of the signal before taking the fft in order to see the peaks more clearly:
FTsignal = fft(signal - mean(signal))/numel(signal);
assuming that ‘signal’ is a vector.
Anshuman Pal
Anshuman Pal 2020 年 3 月 3 日
Thank you, this is precisely what I needed!
One final question --- I expect the wavenumber of one peak to be an integer multiple of the other. How can I verify/disprove this?

サインインしてコメントする。

採用された回答

Star Strider
Star Strider 2020 年 3 月 3 日
The easiest way to determine the location of the peaks is to use the findpeaks function (with the appropriate name-value pairs to isolate your peaks of interest). I cannot guarantee that the frequencies will be integer multiples of each other, however findpeaks is the best way to identify them.
Improve the frequency resolution by increasing the length of the fft itself. Specify an appropriately large value for ‘n’ (the second argument) to increase the frequency resolution to whatever you want.
  6 件のコメント
Anshuman Pal
Anshuman Pal 2020 年 3 月 5 日
Thank you. And on what basis do you choose the values for the parameters MinPeakProminence in findpeaks and the number of bins in histfit?
Star Strider
Star Strider 2020 年 3 月 5 日
As always, my pleasure!
I experimented with them until I got the result I wanted.
With respect to peak prominences, it is possible to get those directly from findpeaks by requesting extra outputs, then choosing the minimum that returns what you want. Here, I just experimented.
The same for histfit. I experimented with different bin numbers until I got what appeared to me to be an acceptable result.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeSpectral Measurements についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by