Subversion Repositories svnkaklik

Rev

Rev 524 | Rev 526 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 524 Rev 525
Line -... Line 1...
-
 
1
// jednoduchy algoritmus krizove korelace
-
 
2
// copile gcc correlation.c -lm -o correlation
-
 
3
 
1
#include <stdio.h>
4
#include <stdio.h>
2
#include <stdlib.h>
5
#include <stdlib.h>
3
#include <math.h>
6
#include <math.h>
4
 
7
 
5
int sample[100];
8
int sample[100];
Line 22... Line 25...
22
 
25
 
23
    if (i > (spozdeni+delka_pulsu+20) && i < delka_pole) pole[i]=value;
26
    if (i > (spozdeni+delka_pulsu+20) && i < delka_pole) pole[i]=value;
24
  }
27
  }
25
}
28
}
26
 
29
 
-
 
30
int linear_chirp(int *pole, int delka_pole, int delka_pulsu, int spozdeni){
-
 
31
 
-
 
32
static const double pi = 3.141592653589793238462643383279502884197; // Archimedes constant pi
-
 
33
static const float f0 = 1;
-
 
34
static const float k = 1;
-
 
35
 
-
 
36
int t;
-
 
37
 
-
 
38
//  for(t=0;t < delka_pole;t++){ pole[t] = (int) ( 100*sin(2*pi*t*(f0+(k/2)*t)) ) ;
-
 
39
//  }
-
 
40
  for(t=0;t < delka_pole;t++){ pole[t] = (int) ( 100*sin(t/2) ) ;
-
 
41
  }
-
 
42
}
-
 
43
 
27
int main (void)
44
int main (void)
28
{
45
{
29
   int i,n,m;
46
   int i,n,m,delay;
30
   double r;
47
   double r;
31
 
48
 
32
   obdelnik(sample,100,10,35);			// vyrobi vzorek signalu
49
   linear_chirp(sample,100,10,0);			// vyrobi vzorek signalu
33
   obdelnik(signal,500,10,100);			// vyrobi signal ve kterem se vzorek hleda
50
   obdelnik(signal,500,10,100);			// vyrobi signal ve kterem se vzorek hleda
34
 
51
 
35
   for(n=0; n < 400;n++){			//spocita korelaci pro mozna spozdeni
52
   for(n=0; n < 400;n++){			//spocita korelaci pro mozna spozdeni
36
     r=0;
53
     r=0;
37
     for(m=0;m < 100;m++) r += sample[m]*signal[m+n];
54
     for(m=0;m < 100;m++) r += sample[m]*signal[m+n];
38
     correlation[n]=r;
55
     correlation[n]=r;
39
   }
56
   }
40
 
57
 
-
 
58
   r=0;
-
 
59
   for(n=0; n < 400;n++){			//najde nejvetsi shodu (pro nazornost v samostatnem cyklu)
-
 
60
     if (r < correlation[n]){
-
 
61
       delay = n;
-
 
62
       r = correlation[n];
-
 
63
     }
-
 
64
   }
-
 
65
 
41
 
66
 
42
   for(i=0;i<400;i++)
67
   for(i=0;i<400;i++)
43
   {
68
   {
44
     fprintf(stdout,"%3u ",i);	 		// vypise cislo bunky v poli (spozdeni)
69
     fprintf(stdout,"%3u ",i);	 		// vypise cislo bunky v poli (spozdeni)
45
//     fprintf(stdout,"%2d ",sample[i]);
70
     fprintf(stdout,"%2d ",sample[i]);
46
//     fprintf(stdout,"%2d ",signal[i]);
71
//     fprintf(stdout,"%2d ",signal[i]);
47
     fprintf(stdout,"%3.2f\n",correlation[i]);		// vypise hodnotu korelace nejvissi cislo je nejvetsi korelace.
72
//     fprintf(stdout,"%3.2f\n",correlation[i]);		// vypise hodnotu korelace nejvissi cislo je nejvetsi korelace.
48
   }
73
   }
-
 
74
   fprintf(stdout,"\nvzorek v signalu zacina na miste: %3u \n",delay);
49
 
75
 
50
  exit(1);
76
  exit(1);
51
}
77
}