Forums

problem with fft on autocorrelation data

Started by acc March 31, 2007
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 ?
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
On Mar 31, 6:44 am, "Oli Charlesworth" <c...@olifilth.co.uk> wrote:

> How are you calculating your autocorrelation data? > > -- > Oli
I'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
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
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 ?