# forum.alglib.net

ALGLIB forum
 It is currently Fri Feb 23, 2024 4:30 am

 All times are UTC

### Forum rules

1. This forum can be used for discussion of both ALGLIB-related and general numerical analysis questions
2. This forum is English-only - postings in other languages will be removed.

 Page 1 of 1 [ 6 posts ]
 Print view Previous topic | Next topic
Author Message
 Post subject: Understanding Cross-Correlation using ALGLIBPosted: Tue Dec 20, 2011 2:40 am

Joined: Tue Dec 20, 2011 2:34 am
Posts: 4
Hello all,

I like to compare two sample points and I recently found ALGLIB implementation of Cross Correlation. However, I just wanted to write a simple test program to see what the results would give me. I did research and read up on Cross-Correlation but I am still kind of confused as to how to read the results. Can anyhow help me?

Here is my sample program:

int main(int argc, char *argv[])
{
double signalData[SIGNAL_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
double patternData[PATTERN_SIZE] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
real_1d_array signal;
real_1d_array pattern;
real_1d_array corrResult;

signal.setcontent(SIGNAL_SIZE, signalData);
pattern.setcontent(PATTERN_SIZE, patternData);

corrr1d(signal, SIGNAL_SIZE, pattern, PATTERN_SIZE, corrResult);

double *d = corrResult.getcontent();

return 0;
}

Now, what I get back from the results is the following.

[0] 285.00000000000000 double
[1] 240.00000000000000 double
[2] 196.00000000000000 double
[3] 154.00000000000000 double
[4] 115.00000000000000 double
[5] 80.000000000000000 double
[6] 50.000000000000000 double
[7] 26.000000000000000 double
[8] 9.0000000000000000 double
[9] 0.00000000000000000 double
[10] 0.00000000000000000 double
[11] 9.0000000000000000 double
[12] 26.000000000000000 double
[13] 50.000000000000000 double
[14] 80.000000000000000 double
[15] 115.00000000000000 double
[16] 154.00000000000000 double
[17] 196.00000000000000 double
[18] 240.00000000000000 double

Top

 Post subject: Re: Understanding Cross-Correlation using ALGLIBPosted: Tue Dec 20, 2011 3:04 am

Joined: Tue Dec 20, 2011 2:34 am
Posts: 4
So, the results provide me with how "closely" my samples are related. And this is present by the strength of the values.

However, if I want to go further and see if thw two sample points are related..could I do the following?

1) AutoCorrelate my signal data with itself. Keep the vector results, R1.
2) Cross Correlate the signal data with the pattern data. Keep vector results, R2.
3) Compare the R1 and R2 to see if they are similar or same?

Is that correct?

Top

 Post subject: Re: Understanding Cross-Correlation using ALGLIBPosted: Tue Dec 20, 2011 1:23 pm

Joined: Fri May 07, 2010 7:06 am
Posts: 900
What did you mean when you said "two sample points are related"? I don't know how to estimate similarity between two points - with cross-correlation, only samples can be estimated.

Top

 Post subject: Re: Understanding Cross-Correlation using ALGLIBPosted: Wed Dec 21, 2011 2:33 am

Joined: Tue Dec 20, 2011 2:34 am
Posts: 4
Hi Sergey,

Thanks for your response. Yes, I was referring to two sample sets. So, in my code above, I set both samples to identical data sets.

So, if I am reading the results correctly, it is telling me that index 0 has the strongest value...and that would make sense. Is that correct?

Top

 Post subject: Re: Understanding Cross-Correlation using ALGLIBPosted: Wed Dec 21, 2011 8:42 am

Joined: Fri May 07, 2010 7:06 am
Posts: 900
Yes, it is correct - when you calculate autocorrelation, first index is the largest one (it can be easily seen when you look at correlation as dot product of two N-dimensional vectors - two normalized vectors will have largest product if and only if they are equal to each other. This case corresponds to zero offset when calculating autocorrelation.

Top

 Post subject: Re: Understanding Cross-Correlation using ALGLIBPosted: Wed Dec 21, 2011 5:37 pm

Joined: Tue Dec 20, 2011 2:34 am
Posts: 4

I wanted to apply the comparison of my sample sets and was curious what is the best approach when there is a pattern sample in the signal sample but it is NOT EXACT. Meaning there it is appromixate but not exactly like the signal sample. Is there a good solution to say well it is not exact but it is near some tolerence that is acceptable for my application?

So, I find strongest coefficient offset from the cross correlation of my sample data and my pattern data. The sample data does contain an approximate of my pattern data....can I just take compare the correlation result (starting at the strongest value offset) with some degree of tolerence and use that for determining that the signal matches the pattern?

Top

 Display posts from previous: All posts1 day7 days2 weeks1 month3 months6 months1 year Sort by AuthorPost timeSubject AscendingDescending
 Page 1 of 1 [ 6 posts ]

 All times are UTC

#### Who is online

Users browsing this forum: No registered users and 6 guests

 You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum

Search for: