DSPRelated.com
Forums

FFT frequency shift

Started by nachomateos September 21, 2005
Dear all,

The problem I am having deals with the FFT. We are acquiring signals from
several measurements of electromagnetic fields in the work-environment
(for safety reasons) and we want to obtain the most exactly version of the
signal in the frequency domain. Appart from the usual problems with FFT,
leakage, Windows, resolution, etc. we have come the problem that the
signals that we acquire (low-med freq, till 400 kHz) are not stable in
time; the currents and electromagnetic fields generated change the output
frequency; I mean, the frequency is sometimes around i.e. 50 Hz and
sometimes around 51 Hz. As we record about 10 ms we obtain periods were
the fundamentals are in 50 Hz and sometimes in 51 Hz, but of course we
would like to consider both frequencies as the same (only 50 Hz). The
entire signal consists in multiple pulses in multiple frequencies
(normally 50 Hz and harmonics as dominant signals). The fft presnets in
these cases amplitudes in 50 and 51 Hz which do not correspond with the
actual value.
Is there any method to process the signal so that we can avoid inaccuracy
values of the fft around a frequency component?

Thank you so much

Nacho



		
This message was sent using the Comp.DSP web interface on
www.DSPRelated.com
nachomateos wrote:
> The problem I am having deals with the FFT. We are acquiring signals from > several measurements of electromagnetic fields in the work-environment > (for safety reasons) and we want to obtain the most exactly version of the > signal in the frequency domain. Appart from the usual problems with FFT, > leakage, Windows, resolution, etc. we have come the problem that the > signals that we acquire (low-med freq, till 400 kHz) are not stable in > time; the currents and electromagnetic fields generated change the output > frequency; I mean, the frequency is sometimes around i.e. 50 Hz and > sometimes around 51 Hz. As we record about 10 ms we obtain periods were > the fundamentals are in 50 Hz and sometimes in 51 Hz, but of course we > would like to consider both frequencies as the same (only 50 Hz). The > entire signal consists in multiple pulses in multiple frequencies > (normally 50 Hz and harmonics as dominant signals).
You could try to generate a signal at about half your original sample rate, but phase-locked to your approximately 50 Hz carrier; resample/interploate your data using the zero crossings of this phase locked signal, then fft the resampled data. This might reduce the number of fft bins containing your 50-51 Hz carrier and its harmonics, depending on how well the phase-locked loop matches the frequency/phase modulation of the fundamental carrier. But any signal unrelated to the carrier would then be smeared out. IMHO. YMMV. -- rhn A.T nicholson d.O.t C-o-M
"nachomateos" <nachomateos@gmail.com> wrote in message 
news:u6idnZr5SqFMO6zeRVn-1Q@giganews.com...
> Dear all, > > The problem I am having deals with the FFT. We are acquiring signals from > several measurements of electromagnetic fields in the work-environment > (for safety reasons) and we want to obtain the most exactly version of the > signal in the frequency domain. Appart from the usual problems with FFT, > leakage, Windows, resolution, etc. we have come the problem that the > signals that we acquire (low-med freq, till 400 kHz) are not stable in > time; the currents and electromagnetic fields generated change the output > frequency; I mean, the frequency is sometimes around i.e. 50 Hz and > sometimes around 51 Hz. As we record about 10 ms we obtain periods were > the fundamentals are in 50 Hz and sometimes in 51 Hz, but of course we > would like to consider both frequencies as the same (only 50 Hz). The > entire signal consists in multiple pulses in multiple frequencies > (normally 50 Hz and harmonics as dominant signals). The fft presnets in > these cases amplitudes in 50 and 51 Hz which do not correspond with the > actual value. > Is there any method to process the signal so that we can avoid inaccuracy > values of the fft around a frequency component? > > Thank you so much > > Nacho >
I'm not quite sure if I understand you correctly, however, if you suspect that your problems are stemming from the fft, why not just directly transform your samples into the frequency domain. It's takes longer to process but it's very simple code, and at least you don't have to deal with bins. I probably have a Java code sample of this somewhere if you like. Thomas
You say the frequency is not stable.  So, it is not going to go into 1
frequency bin. It is not going to be exact, it is changing. The FFT may
not be the best way to represent what you are trying to show, but from
your post it is not clear what that is. So, what is it you want to
show?

Are you trying to show the frequency variations with time?
Are you trying to show the average power around each of the harmonics?
Are you trying to show the amplitude variation of each harmonic over
time?
Do you want the total signal power of the fundamental and harmonics?
...

What you want to show makes a difference in what you do.

One other thing. Are you saying that you are doing an FFT on 10 ms of
data that comes from a signal with a nominally 20 msec period? How are
you getting 1 Hz resolution?

Dirk


nachomateos wrote:
> Dear all, > > The problem I am having deals with the FFT. We are acquiring signals from > several measurements of electromagnetic fields in the work-environment > (for safety reasons) and we want to obtain the most exactly version of the > signal in the frequency domain. Appart from the usual problems with FFT, > leakage, Windows, resolution, etc. we have come the problem that the > signals that we acquire (low-med freq, till 400 kHz) are not stable in > time; the currents and electromagnetic fields generated change the output > frequency; I mean, the frequency is sometimes around i.e. 50 Hz and > sometimes around 51 Hz. As we record about 10 ms we obtain periods were > the fundamentals are in 50 Hz and sometimes in 51 Hz, but of course we > would like to consider both frequencies as the same (only 50 Hz). The > entire signal consists in multiple pulses in multiple frequencies > (normally 50 Hz and harmonics as dominant signals). The fft presnets in > these cases amplitudes in 50 and 51 Hz which do not correspond with the > actual value. > Is there any method to process the signal so that we can avoid inaccuracy > values of the fft around a frequency component? > > Thank you so much > > Nacho > > > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.com
in article 1127352607.683350.125880@z14g2000cwz.googlegroups.com, dbell at
dbell@niitek.com wrote on 09/21/2005 21:30:

> You say the frequency is not stable. So, it is not going to go into 1 > frequency bin. It is not going to be exact, it is changing. The FFT may > not be the best way to represent what you are trying to show,
i think i agree with this. is the visual result that you want something like a spectrograph (what might come out of a STFT)? -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
robert bristow-johnson wrote:
> in article 1127352607.683350.125880@z14g2000cwz.googlegroups.com, dbell at > dbell@niitek.com wrote on 09/21/2005 21:30: > > >>You say the frequency is not stable. So, it is not going to go into 1 >>frequency bin. It is not going to be exact, it is changing. The FFT may >>not be the best way to represent what you are trying to show, > > > i think i agree with this. is the visual result that you want something > like a spectrograph (what might come out of a STFT)?
There are commercial instruments to do this job. Considering the level of expertise brought to bear here, "If you can but it, don't build it" seems to apply. Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
You can always consider a wavelet based approach unless your looking
for pure frequency.  That would negate the time variation issue, but
you obviously wouldnt have the results in the frequency domain.  The
key would be to find a suitable mother wave. 

Brian

The question is would this give the OP the ability to produce the
information needed (still TBD what that is). Wavelets have been used
for compression very well.  The problem in using wavelets for analysis
is interpreting the results. 

Dirk

Hi Jerry,

Is that 'but' with two 't''s or a 'y'? :)

Dirk

dbell wrote:
> Hi Jerry, > > Is that 'but' with two 't''s or a 'y'? :) > > Dirk
Buy/ Merde! Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;