Find the nonzero maximum frequency corresponding to FFT graph.
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Zahra
am 27 Apr. 2023
Kommentiert: David Goodmanson
am 28 Apr. 2023
I want to find the maximum corresponding frequency for the ftt graph. The graph shows the maximum frequency at zero frequency, this is not what I want. I am expecting to have a value around 664 Hz.
The codes:
so=dat.data(:,2); %original signal
t=dat.data(:,1); %time
dt=t(2)-t(1);
Fs=1/dt; %sampling frequency
f=linspace(0,Fs,length(t));
%Fourier Transform
SO=fft(so);
SOa=abs(SO);
F_fake=f(find(SOa(1:round(length(SOa)/2))==max(SOa))); % I am getting zero instead of 663.9 Hz.
I want a value which is nonzero. How to eliminate the zero Hz frequency ?
FFT graph.
0 Kommentare
Akzeptierte Antwort
David Goodmanson
am 27 Apr. 2023
Bearbeitet: David Goodmanson
am 27 Apr. 2023
Hi Zahra,
the peak at zero frequency is because your signal does not have average value of zero, but has a DC offset. To eliminate the zero freq peak you can remove the offset by subracting the mean off of the signal. So you can use not fft(signal) but rather fft(signal-mean(signal)). (This assumes that the DC offset is not of interest in this case).
2 Kommentare
David Goodmanson
am 28 Apr. 2023
DC offset is a bit of a slang term in the sense that it refers to electrical voltage or current signals, not the most general possible signal. Suppose you have a complicated signal and take the fft. The zero frequency term from the fft corresponds to a constant value in the time domain. Now consider a simple example of constant term of value 3 and just one nonzero frequency of amplitude 10. In terms of voltage this is modeled as a 10V cosine signal in series with a 3V battery, 10*cos(2*pi*f) + 3. The cosine term of course has mean value of 0 and the constant term, 3, is called the DC offset.
Weitere Antworten (1)
Paul
am 27 Apr. 2023
Bearbeitet: Paul
am 27 Apr. 2023
If the DC offset is of interest (or even if it isn't)
[maxSOa,index] = max(SOa(2:end)); % ignores first point a f=0
F_fake = f(index+1)
This approach will find the the frequency corresponding to the first maximum value in SOa(2:end) should there be multiple occurrences of the maximum value.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Fourier Analysis and Filtering finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!