필터 지우기
필터 지우기

Obtaining fundamental frequency of complex signal from Fourier transform

조회 수: 8 (최근 30일)
I have a complex periodic signal buried in noise. The magnitude spectrum of the FFT shows 3 peaks at 20 Hz 70 Hz and 174 Hz. I need to find the fundamental frequency of the signal. Is it possible to do this simply by looking at the magnitude spectrum of the Fourier transform? The power spectrum also shows the same 3 peaks.
Thanks
  댓글 수: 2
dpb
dpb 2014년 10월 2일
편집: dpb 2014년 10월 2일
What does this signal supposedly represent? Mayhaps there is no "fundamental" frequency...those three aren't simple relationships to each other altho that may or may not mean anything.
Normally, the fundamental frequency in a periodic signal is the lowest frequency and one then sees harmonics and mixing of sidebands of those. In a complex mechanical device such as a bearing, there may be a "veritable plethora" of frequencies corresponding to the various physical pieces -- rotation speeds of inner/outer races, number of balls/rollers, etc., etc., etc., ...
Nate
Nate 2014년 10월 3일
Assume the signal is a measure of signal amplitude (eg. V) over time.
I believe the fundamental frequency (or at least an integer multiple of it) is the largest unit where integral division into all of the peaks is possible, in this case 2 Hz. All peaks in FT are integer multiples of the fundamental, as I understand, and any harmonic, including the fundamental frequency, may have zero amplitude (as in this case - so it is not seen).

댓글을 달려면 로그인하십시오.

채택된 답변

Chris Turnes
Chris Turnes 2014년 10월 3일
I think the answer depends on what you mean by "looking directly at the magnitude spectrum of the Fourier transform." If what you are looking for is an automated (i.e., programmatic) way of detecting the fundamental frequency, then there are essentially two tasks:
  1. Identify the spectral peaks
  2. Find the fundamental from the peak locations
The first task is something you should be able to accomplish with the findpeaks function in the Signal Processing Toolbox. This is the easier of the two tasks.
As for the second task, I believe the following approach will work (even if the frequencies are not integers). If each frequency is an integer multiple of the fundamental, then when each frequency is divided by the minimum frequency of the set, the resulting quantity will be rational. You can extract the numerator and denominator of these ratios using the rat function :
>> [N,D] = rat(f/min(f));
The maximum denominator factor that is possible is i, the multiple of the fundamental for the minimum frequency in the set ( i.e. , fmin=i*f0 ). Therefore, you should be able to determine the fundamental frequency as
>> f0 = min(f) / max(D);
For example:
>> f0 = 20 + rand % pick a random frequency for the fundamental
f0 =
20.2785
>> f = [3 4 8 12 22]*f0; % some set of harmonics
>> [N,D] = rat(f/min(f));
>> min(f)/max(D) % try to find the fundamental
ans =
20.2785

추가 답변 (0개)

카테고리

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