GPLIB++
KHL.h
Go to the documentation of this file.
1 #ifndef KHL_H_
2 #define KHL_H_
3 
4 #include "miscfunc.h"
5 #include "VecMat.h"
6 #include <iostream>
7 
8 namespace ublas = boost::numeric::ublas;
9 
10 namespace gplib
11  {
12  void KHLExpand(const rvec &input, rmat &v, rvec &a)
13  {
14  //rvec autocorr(input);
15  //Correl(input,input,autocorr);
16  rmat corrmat(input.size(), input.size());
17  for (int i = 0; i < input.size(); ++i)
18  for (int j = 0; j < input.size(); ++j)
19  corrmat(i, j) = input((i + j) % input.size());
20  cmat vl(input.size(), input.size()), vr(input.size(), input.size());
21  cvec evalues(input.size());
22  boost::numeric::bindings::lapack::geev(corrmat, evalues, &vl, &vr,
23  boost::numeric::bindings::lapack::optimal_workspace());
24  v = real(vr);
25  noalias(a) = prod(trans(v), input);
26 
27  }
28  }
29 #endif /*KHL_H_*/
void KHLExpand(const rvec &input, rmat &v, rvec &a)
Definition: KHL.h:12