RTXI  2.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
covmeth.cpp
Go to the documentation of this file.
1 //
2 // File = covmeth.cpp
3 //
4 
5 #include "covmeth.h"
6 #include <fstream>
7 #include <stdlib.h>
8 
9 #ifdef _DEBUG
10 extern std::ofstream DebugFile;
11 #endif
12 
13 CovarMethCorrMtx::CovarMethCorrMtx(complex* x, int seq_len, int max_lag)
14  : matrix<complex>(1, max_lag + 1, 1, max_lag + 1)
15 {
16  int i, j, n, p, i_idx, j_idx;
17  complex sum;
18  double denom;
19 
20  p = max_lag + 1;
21  denom = double(seq_len - p);
22 
23  for (i = 1; i <= p; i++) {
24  for (j = 1; j <= p; j++) {
25  i_idx = p - i;
26  j_idx = p - j;
27  sum = complex(0.0, 0.0);
28  for (n = p; n < seq_len; n++) {
29  sum += conj(x[i_idx]) * x[j_idx];
30  i_idx++;
31  j_idx++;
32  } // end of loop over n
33  sum = sum / denom;
34  (*(_p->f[i - 1]))[j] = sum;
35  } // end of loop over j
36  } // end of loop over i
37 
38  return;
39 }
40 
41 //==============================================
42 complex*
43 CovarMethRightHandVect(complex* x, int seq_len, int max_lag)
44 {
45  int i, n, p, i_idx, j_idx;
46  complex sum, *r;
47  double denom;
48 
49  p = max_lag + 1;
50  denom = double(seq_len - p);
51 
52  r = new complex[p + 1];
53  r[0] = complex(0.0, 0.0);
54 
55  for (i = 1; i <= p; i++) {
56  i_idx = p - i;
57  j_idx = p;
58  sum = complex(0.0, 0.0);
59  for (n = p; n < seq_len; n++) {
60  sum += conj(x[i_idx]) * x[j_idx];
61  i_idx++;
62  j_idx++;
63  } // end of loop over n
64  sum = sum / denom;
65  r[i] = sum;
66  } // end of loop over i
67 
68  return (r);
69 }
complex conj(const complex _z)
Definition: complex.h:108
struct matrix::mrep * _p
rowvec< T > ** f
Definition: matrix_t.h:17
std::ofstream DebugFile
CovarMethCorrMtx(complex *signal, int seq_len, int max_lag)
Definition: covmeth.cpp:13
complex * CovarMethRightHandVect(complex *x, int seq_len, int max_lag)
Definition: covmeth.cpp:43