Hello I should calculate a FFT of signal that have max 500Hz of frequency. I know that for avoid aliasing problem I must have a sample rate of Fmax*2, so I have fix it to: Sample_Rate_Frequency= 1024Hz Question 1) Is correct the follow table: [Acquisited Point] [Acquisition Duration] [Frequency Resolution] 1024 1 sec 1Hz 512 1/2 sec 2Hz 256 1/4 sec 4Hz 128 1/8 sec 8Hz Question 2) Suppose first previous case of 1024 Acquisited Point saved in IMX() and REX()vectors. Suppose I would calculate and plot the Power() = IMX()*IMX() + REX()*REX() Is correct that Power vector must have the HALF SIZE of IMX()or REX() For Index=1 to 512 Power(Index) = IMX(Index)*IMX(Index) + REX(Index)*REX(Index) Next Because the second half (513 - 1024) contain only an alias of signal? Question 3) If point 1 and 2 are correct, if I acquire only 128 point, calculate power on 64, I have resolution of 8Hz?? Thanks in advice

# FFT: Could you help me to clarify some doubts?

Started by ●October 27, 2011

Reply by ●October 27, 20112011-10-27

On 27.10.11 4:59 , gpezzella wrote:> Hello > I should calculate a FFT of signal that have max 500Hz of frequency. > > I know that for avoid aliasing problem I must have a sample rate of Fmax*2, > so I have fix it to: > > Sample_Rate_Frequency= 1024Hz >The aliasing problem is not so simple: you need an analog filter before sampling. The filter must attenuate the alias frequencies so that the remaining energy is negligible in your application. If you have a signal bandwidth of 500 Hz, you're specifying a nearly impossible anti-alias analog filter with 1024 Hz sampling rate. The alias frequency of 500 Hz will then be at 524 Hz, so you're specifying a filter with null attenuation at 500 Hz and very high attenuation at 524 Hz. -- Tauno Voipio

Reply by ●October 27, 20112011-10-27

>The aliasing problem is not so simple: you need an analog filter >before sampling. The filter must attenuate the alias frequencies >so that the remaining energy is negligible in your application. > >If you have a signal bandwidth of 500 Hz, you're specifying a >nearly impossible anti-alias analog filter with 1024 Hz sampling >rate. The alias frequency of 500 Hz will then be at 524 Hz, so >you're specifying a filter with null attenuation at 500 Hz and >very high attenuation at 524 Hz.Why analog? Supponing that I will use it, could you reply my 3 questions? Thanks

Reply by ●October 27, 20112011-10-27

On 10/27/2011 12:00 PM, gpezzella wrote:>> The aliasing problem is not so simple: you need an analog filter >> before sampling. The filter must attenuate the alias frequencies >> so that the remaining energy is negligible in your application. >> >> If you have a signal bandwidth of 500 Hz, you're specifying a >> nearly impossible anti-alias analog filter with 1024 Hz sampling >> rate. The alias frequency of 500 Hz will then be at 524 Hz, so >> you're specifying a filter with null attenuation at 500 Hz and >> very high attenuation at 524 Hz. > > Why analog? > > Supponing that I will use it, could you reply my 3 questions?OK. > Question 1) > Is correct the follow table: > > [Acquisited Point] [Acquisition Duration] [Frequency Resolution] > 1024 1 sec 1Hz > 512 1/2 sec 2Hz > 256 1/4 sec 4Hz > 128 1/8 sec 8Hz Probably not. I'm not sure that I understand it. > Question 2) > Suppose first previous case of 1024 Acquisited Point saved in IMX() > and REX()vectors. > Suppose I would calculate and plot the Power() = IMX()*IMX() + > REX()*REX() > > Is correct that Power vector must have the HALF SIZE of IMX()or REX() > > For Index=1 to 512 > Power(Index) = IMX(Index)*IMX(Index) + REX(Index)*REX(Index) > Next > > Because the second half (513 - 1024) contain only an alias of signal? What second half? The FFT yields as many bins as the number of samples allows. If you sample for 10 seconds, you will have 10240 samples, with a resolution of 0.1 Hz *at all frequencies up to fs/2*. > Question 3) > If point 1 and 2 are correct, if I acquire only 128 point, calculate > power on 64, I have resolution of 8Hz?? It's not correct. Jerry P.S. Tauno is right. You won't be able to make an effective anti-alias filter. -- Engineering is the art of making what you want from things you can get.

Reply by ●October 27, 20112011-10-27

"gpezzella" <gpezzella@n_o_s_p_a_m.yahoo.com> wrote in message news:nNKdnSVjGf1b_jTTnZ2dnUVZ_t2dnZ2d@giganews.com...> Hello > I should calculate a FFT of signal that have max 500Hz of frequency. > > I know that for avoid aliasing problem I must have a sample rate of > Fmax*2, > so I have fix it to: > > Sample_Rate_Frequency= 1024Hz > > Question 1) > Is correct the follow table: > > [Acquisited Point] [Acquisition Duration] [Frequency Resolution] > 1024 1 sec 1Hz > 512 1/2 sec 2Hz > 256 1/4 sec 4Hz > 128 1/8 sec 8HzYes. FFT Length = Number_of_samples / Sampling_rate Frequency_resolution = 1 / Length You certainly can't see a pattern repeating at 1 cycle per second if you have less 1 second of data!> > > Question 2) > Suppose first previous case of 1024 Acquisited Point saved in IMX() and > REX()vectors. > Suppose I would calculate and plot the Power() = IMX()*IMX() + REX()*REX() > > Is correct that Power vector must have the HALF SIZE of IMX()or REX() > > For Index=1 to 512 > Power(Index) = IMX(Index)*IMX(Index) + REX(Index)*REX(Index) > Next > > Because the second half (513 - 1024) contain only an alias of signal?This happens when the input data are purely real i.e. input imaginary parts are all zero. Actually, if you look at the imaginary output data, you will see that IMX(1024-i) = - IMX(i) but this is masked by squaring. It is different when the input data is complex.> > > Question 3) > If point 1 and 2 are correct, if I acquire only 128 point, calculate power > on 64, I have resolution of 8Hz?? > > Thanks in advice > > >FFT Length = 128 / 1024 1 / Length = 1024 / 128 = 8 Hz Bin 0 = DC Bin 1 = 8 Hz Bin 2 = 16 Hz Bin 3 = 24 Hz . . . Bin 61 = 488 Hz Bin 62 = 496 Hz Bin 63 = 504 Hz which is just under fs / 2

Reply by ●October 27, 20112011-10-27

Hello, I will try to explain what I would do..... *************************************************************************** My Case *************************************************************************** I have a Microwave Sensor that detect human being presence (google innosent ipm 65 and click on first result that will appeare). When human being is detect, IPM 65 return in output frequency from 6Hz - 600 Hz). When other things are detect, bird, car etc other frequency are generate in output. I would check frequency between 6Hz - 600Hz, avoiding if possible analog filter, for see where are peaks in this range. In this manner I could try to discriminate different case: human, dogs etc. *************************************************************************** *************************************************************************** Theory *************************************************************************** I try to repost the question in different way. Suppose to sample the output of Innosent IPM 65 after the amplify filter showed in fig3 of datasheet (6-600 Hz with 60dB gain) Suppose to have FIXED SAMPLING RATE = 1024 Hz Suppose to perform 4 different acquisition 1) Aquisition = 1024 Points 2) Aquisition = 512 Points 3) Aquisition = 256 Points 4) Aquisition = 128 Points [Acquisited Point] [Acquisition Duration] [Frequency Resolution] 1) 1024 1 sec ? 2) 512 1/2 sec ? 3) 256 1/4 sec ? 4) 128 1/8 sec ? 1) Which is the resolution of every acquistion? (Plase fill the resolution field) After every acquisiton I calculate FFT that return me 2 vectors: REX() and IMX() 2) Is the lenght of this 2 vectors equal at number of points acquisited? 3) If I calculate the power OUT()= IMX()*IMX()+ REX()*REX() is the lenght of vector OUT() equal at number of acquisited points? 4) Which range of points of the vector OUT()I should plot for be sure to show theoretically correct information? [Acquisited Point] [Acquisition Duration] [Range] 1) 1024 1 sec ? 2) 512 1/2 sec ? 3) 256 1/4 sec ? 4) 128 1/8 sec ? (Plase fill the range field) Please reply point to point having GREAT PATIENCE :-) Thanks in advice

Reply by ●October 27, 20112011-10-27

On 10/27/2011 4:56 PM, gpezzella wrote:> Hello, > I will try to explain what I would do..... > > > *************************************************************************** > My Case > *************************************************************************** > I have a Microwave Sensor that detect human being presence (google innosent > ipm 65 and click on first result that will appeare). > > When human being is detect, IPM 65 return in output frequency from 6Hz - > 600 Hz). When other things are detect, bird, car etc other frequency are > generate in output. > > I would check frequency between 6Hz - 600Hz, avoiding if possible analog > filter, for see where are peaks in this range. > > In this manner I could try to discriminate different case: human, dogs > etc. > *************************************************************************** > > > > > > *************************************************************************** > Theory > *************************************************************************** > > I try to repost the question in different way. > > Suppose to sample the output of Innosent IPM 65 after the amplify filter > showed in fig3 of datasheet (6-600 Hz with 60dB gain) > > Suppose to have FIXED SAMPLING RATE = 1024 Hz > Suppose to perform 4 different acquisition > > 1) Aquisition = 1024 Points > 2) Aquisition = 512 Points > 3) Aquisition = 256 Points > 4) Aquisition = 128 Points > > [Acquisited Point] [Acquisition Duration] [Frequency Resolution] > 1) 1024 1 sec ? > 2) 512 1/2 sec ? > 3) 256 1/4 sec ? > 4) 128 1/8 sec ? > > 1) Which is the resolution of every acquistion? > (Plase fill the resolution field)You had it right the first time. I wasn't sure I understood.> After every acquisiton I calculate FFT that return me 2 vectors: REX() and > IMX() > > 2) Is the lenght of this 2 vectors equal at number of points acquisited?The length of each of them. For N points into the FFT, there are N complex numbers out.> 3) If I calculate the power OUT()= IMX()*IMX()+ REX()*REX() is the lenght > of vector OUT() equal at number of acquisited points? > > 4) Which range of points of the vector OUT()I should plot for be sure to > show theoretically correct information? > > [Acquisited Point] [Acquisition Duration] [Range] > 1) 1024 1 sec ? > 2) 512 1/2 sec ? > 3) 256 1/4 sec ? > 4) 128 1/8 sec ? > > (Plase fill the range field)[Acquired Point] [Acquisition Duration] [Range] 1) 1024 1 sec 1024 2) 512 1/2 sec 512 3) 256 1/4 sec 256 4) 128 1/8 sec 128 The validity of result depends on the absence of all frequencies greater than half the sampling frequency *before* the sampling takes place. Let me know if I missed anything. Jerry -- Engineering is the art of making what you want from things you can get.

Reply by ●October 27, 20112011-10-27

On Thu, 27 Oct 2011 08:59:34 -0500, gpezzella wrote:> Hello > I should calculate a FFT of signal that have max 500Hz of frequency. > > I know that for avoid aliasing problem I must have a sample rate of > Fmax*2, so I have fix it to: > > Sample_Rate_Frequency= 1024HzYour proposed answer to Question 0 is incorrect. See http://www.wescottdesign.com/articles/Sampling/sampling.pdf for a discussion.> > Question 1) > Is correct the follow table: > > [Acquisited Point] [Acquisition Duration] [Frequency Resolution] > 1024 1 sec 1Hz > 512 1/2 sec 2Hz > 256 1/4 sec 4Hz > 128 1/8 sec 8HzWell, the bins will be spaced apart by the frequencies that you're calling "frequency resolution". There's more to resolving signal frequencies than that, though.> Question 2) > Suppose first previous case of 1024 Acquisited Point saved in IMX() and > REX()vectors. > Suppose I would calculate and plot the Power() = IMX()*IMX() + > REX()*REX() > > Is correct that Power vector must have the HALF SIZE of IMX()or REX()No.> For Index=1 to 512 > Power(Index) = IMX(Index)*IMX(Index) + REX(Index)*REX(Index) > Next > > Because the second half (513 - 1024) contain only an alias of signal?DC (your index 1, I think) is unique, as is Fs/2. Sum _all_ the bins.> Question 3) > If point 1 and 2 are correct, if I acquire only 128 point, calculate > power on 64, I have resolution of 8Hz??No; see my comments on resolution. It ain't that easy. Specifically, you're going to have to window your data, which is going to smear out your spectrum somewhat. -- www.wescottdesign.com

Reply by ●October 28, 20112011-10-28

@Wescott Hi Tim, I have read your sampling.pdf article. It is the most clear article on Antialiasing ever read. If you have other article please send me a link. If I have understand good, I must remove frequency over Fsampling/2 *before* acquire the signal and I must do it with analog filter. Since is pratically impossible have super high order low pass filter, is better first improve the sampling rate frequency and if not was sufficient reduce a cutoff frequency of the analog filter. In this mannery I avoid to introduce unexpected aliased energy into my interested range of frequency. Now I need suggest that come from real experience into real world. This is my case: ******************************************************************* I have a Microwave Sensor that detect human being presence (google innosent ipm 65 and click on first result that will appeare). When human being is detect, IPM 65 return in output frequency from 6Hz - 600Hz. ******************************************************************* 1)Which kind od analog filter and which sample rate you suggest me? 2)How many point (hence resolution or Bins like you say) I need? 3)What I should check for see if human being was detect? Power, Amplitude, Phase ?? @Andrew Thanks for your formula on Frequency_Resolution. Moreover I have check my signal.It is a perfect sin(x) wave and effectively IMX() vector have all zero value. Thanks

Reply by ●October 29, 20112011-10-29