Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 522 → Rev 523

/programy/C/ix86/signals/correlation.c
1,17 → 1,42
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int x[500];
int y[50];
int y[500];
#define n 500
int delay;
int maxdelay = 500;
double correlation[1000];
 
int obdelnik(int *pole, int delka_pulsu, int spozdeni)
{
int i;
int value=1;
for (i=0; i <= n; i++) {
if (i < spozdeni && i < n) pole[i]=value;
 
if ((i > spozdeni) && (i < (spozdeni+10))) pole[i] = value++;
 
if (i < (spozdeni+delka_pulsu+10) && i > (spozdeni+10) && i < n) pole[i]= value;
 
if (i < (spozdeni+delka_pulsu+20) && i > (spozdeni+delka_pulsu+10) && i < n) pole[i] = value--;
 
if (i > (spozdeni+delka_pulsu+20) && i < n) pole[i]=value;
}
}
 
int main (void)
{
fprintf(stdout,"inicializace bufferu s chirpem");
int i,j;
double mx,my,sx,sy,sxy,denom;
 
int i,j
double mx,my,sx,sy,sxy,denom,r;
/* Calculate the mean of the two series x[], y[] */
fprintf(stdout,"inicializace bufferu s chirpem \n");
obdelnik(x,10,40);
obdelnik(y,10,75);
 
 
// vypocita stredni hodnotu signalu
mx = 0;
my = 0;
for (i=0;i<n;i++) {
21,7 → 46,8
mx /= n;
my /= n;
 
/* Calculate the denominator */
// spoocita jmenovatele
 
sx = 0;
sy = 0;
for (i=0;i<n;i++) {
30,10 → 56,11
}
denom = sqrt(sx*sy);
 
/* Calculate the correlation series */
//spocita korelacni koeficient
for (delay=-maxdelay;delay<maxdelay;delay++) {
sxy = 0;
for (i=0;i<n;i++) {
for (i=0;i<n;i++)
{
j = i + delay;
if (j < 0 || j >= n)
continue;
46,11 → 73,18
sxy += (x[i] - mx) * (y[j] - my);
*/
}
r = sxy / denom;
correlation[delay+maxdelay] = sxy / denom;
/* r is the correlation coefficient at "delay" */
 
}
 
for(i=0;i<=n;i++)
{
fprintf(stdout,"%2d ",x[i]);
fprintf(stdout,"%2d ",y[i]);
fprintf(stdout,"%3.2f\n",correlation[i]);
}
 
exit(1);
}