Hi all, Thanks for reading and please feel free to comment. I am having problems with matlab fft on autocorrelation data. When performing a fft on my normalised autocorrelation data i got a imagnary part that is not equal to zero around x=0 and also at the near end of the x-axis, but, in between all points are equal to zero. Imagnary plot that i got looked like below, Positive value | x=0_______________| | x=end Negative | value The positive and negative values are too large to be ignored as compared to my real plot's value. And, fft of the autocorrelation data should be equal to zero in the imagnary plot. Anyone have any solutions or comments? Thank You! _____________________________________ Do you know a company who employs DSP engineers? Is it already listed at http://dsprelated.com/employers.php ?
problem with fft on autocorrelation data
Started by ●March 31, 2007
Reply by ●March 31, 20072007-03-31
On Mar 31, 12:17 pm, "acc" <etac0...@hotmail.com> wrote:> Hi all, > > Thanks for reading and please feel free to comment. > > I am having problems with matlab fft on autocorrelation data. > When performing a fft on my normalised autocorrelation data > i got a imagnary part that is not equal to zero around x=0 and also at the > near end of the x-axis, but, in between all points are equal to zero. > Imagnary plot that i got looked like below, > > Positive > value > | > x=0_______________| > | x=end > Negative | > value > > The positive and negative values are too large to be ignored as compared > to > my real plot's value. And, fft of the autocorrelation data should be equal > to zero in the imagnary plot. >How are you calculating your autocorrelation data? -- Oli
Reply by ●March 31, 20072007-03-31
On Mar 31, 6:44 am, "Oli Charlesworth" <c...@olifilth.co.uk> wrote:> How are you calculating your autocorrelation data? > > -- > OliI'm with Oli here. By definition, autocorrelation must be purely real for x=0. So whatever you are computing is not an autocorrelation :-). Perhaps it's the novice mistake of forgetting a conjugation somewhere? Julius
Reply by ●March 31, 20072007-03-31
On 31 Mar, 13:17, "acc" <etac0...@hotmail.com> wrote:> Hi all, > > Thanks for reading and please feel free to comment. > > I am having problems with matlab fft on autocorrelation data. > When performing a fft on my normalised autocorrelation data > i got a imagnary part that is not equal to zero around x=0 and also at the > near end of the x-axis, but, in between all points are equal to zero. > Imagnary plot that i got looked like below, > > Positive > value > | > x=0_______________| > | x=end > Negative | > value > > The positive and negative values are too large to be ignored as compared > to > my real plot's value. And, fft of the autocorrelation data should be equal > to zero in the imagnary plot.I would like to see some numbers for the imaginary vs real parts of your spectrum. Apart from that, a purely symmetrical autocorrelation sequence will have an odd nomber of samples, whereas a lot of FFT implementations require the number of data points to be a power of 2. If you use such an implementation, the sequence is not (numerically) symmetric and the result will not be purely real. Rune
Reply by ●April 3, 20072007-04-03
Hi all, Thanks for all the suggestions, it took me a few days to locate my own message. Am totally new to here was searching eagerly for my own message under fft column. HAHA! Anyway thanks once again for the replies. 1) My auotcorrelations are computed from a data consist of x,y, by using fortran program. Where x=time and y=velocity and yy=the next velocity after a timestep. Am building the auotcorrelation on the fluctuations by tau=1000 sumVar = sumVar + ((y)**2) %this is for total sample length as in loop sumVariance= sumVar + sumN %sumN = total sample length sumVarf = sumVariance - mean**2 acorsum = acorsum + (y-mean)*(yy-mean) %auotcorrelation acorsum = acorsum /(sumN) %sumN= totalsample - tau sumTimef = acorsum / sumVarf % Normalised autocorrelation This is how i get my autocorrelation based on the fluctuations In Matlab I performed a fft(sumTimef) and compute fequency axes by 0:fn/tau:fn Results that i got: 85.1781 + 0i 15.2218 - 24.8651i 10.2131 - 16.7117i 6.0774 - 13.2611i 5.789 - 10.7412i 4.5314 - 9.6015i all the way till 0.4796 + 0i all the way till 4.5314 + 9.6015i 5.789 + 10.7412i 6.0774 + 13.2611i 10.2131 + 16.7117i 15.2218 + 24.8651i AS for getting the modulus of the fft(data) i can't remember why i didn't perform one. Will check it out. Once again thank you all for your time and comments. ACC _____________________________________ Do you know a company who employs DSP engineers? Is it already listed at http://dsprelated.com/employers.php ?