MNE-CPP  beta 1.0
rtsssalgo.h
Go to the documentation of this file.
1 //=============================================================================================================
40 #ifndef RTSSSALGO_H
41 #define RTSSSALGO_H
42 
43 
44 //*************************************************************************************************************
45 //=============================================================================================================
46 // INCLUDES
47 //=============================================================================================================
48 
49 #include <QtGlobal>
50 #include <QtCore/qmath.h>
51 #include <QList>
52 #include <Eigen/Dense>
53 #include <iostream>
54 #include <QString>
55 #include <QDebug>
56 #include <iostream>
57 #include <fstream>
58 #include <string>
59 #include <stdio.h>
60 #include <stdlib.h>
61 #include <math.h>
62 #include <complex>
63 
64 #include <fiff/fiff.h>
65 #include <fiff/fiff_info.h>
66 //#include <xMeas/Measurement/realtimemultisamplearray_new.h>
67 
68 #define BABYMEG 1
69 #define VECTORVIEW 2
70 
71 using namespace Eigen;
72 using namespace std;
73 using namespace FIFFLIB;
74 //using namespace XMEASLIB;
75 
76 typedef std::complex<double> cplxd;
77 
78 MatrixXd legendre(int, VectorXd);
79 float plgndr(int l, int m, float x);
80 double factorial(int);
81 //QList<MatrixXd> getSSSRR(MatrixXd, MatrixXd, MatrixXd, MatrixXd, MatrixXd);
82 VectorXd hypot(VectorXd, VectorXd);
83 VectorXd atan2vec(VectorXd, VectorXd);
84 VectorXd find(MatrixXd, int);
85 
86 double stdev(VectorXd);
87 VectorXd eigen_LTE(VectorXd V, double tol);
88 VectorXd eigen_LT_index(VectorXd V, double tol);
89 VectorXd eigen_LT_index_test(int);
90 VectorXd eigen_GT(VectorXd V, double tol);
91 VectorXd eigen_AND(VectorXd V1, VectorXd V2);
92 
93 class RtSssAlgo
94 {
95 public:
96  RtSssAlgo();
97  ~RtSssAlgo();
98 
99 // QList<MatrixXd> buildLinearEqn();
100  MatrixXd buildLinearEqn();
101 
102 // QList<MatrixXd> getSSSRR(MatrixXd EqnIn, MatrixXd EqnOut, MatrixXd EqnARR, MatrixXd EqnA, MatrixXd EqnB);
103 // QList<MatrixXd> getSSSRR(MatrixXd EqnB);
104  MatrixXd getSSSRR(MatrixXd EqnB);
105 
106 // QList<MatrixXd> getSSSOLS(MatrixXd EqnIn, MatrixXd EqnOut, MatrixXd EqnA, MatrixXd EqnB);
107 // QList<MatrixXd> getSSSOLS(MatrixXd EqnB);
108  MatrixXd getSSSOLS(MatrixXd EqnB);
109 
110  QList<MatrixXd> getLinEqn();
111 
112  void setMEGInfo(FiffInfo::SPtr fiffinfo);
113  void setSSSParameter(QList<int>);
114  qint32 getNumMEGChan();
115  qint32 getNumMEGChanUsed();
116  qint32 getNumMEGBadChan();
117  VectorXi getBadChan();
118 
119 private:
120  void getCoilInfoVectorView();
121  void getCoilInfoVectorView4Sim();
122  void getCoilInfoBabyMEG4Sim();
123  QList<MatrixXd> getSSSEqn(qint32, qint32);
124 // QList<MatrixXd> getSSSEqn(VectorXi Lexp);
125  void getSSSBasis(VectorXd, VectorXd, VectorXd, qint32, qint32);
126  void getCartesianToSpherCoordinate(VectorXd, VectorXd, VectorXd);
127  void getSphereToCartesianVector();
128  int strmatch(char, char);
129 
130  qint32 NumMEGChan, NumCoil, NumBadCoil;
131  VectorXi BadChan;
132  QList<MatrixXd> CoilT;
133  QList<QString> CoilName, CoilTk;
134  QList<MatrixXd> CoilRk, CoilWk;
135  VectorXi CoilNk, CoilGrad;
136  VectorXd MEGIn, MEGOut, MEGNoise;
137  MatrixXd MEGData;
138 
139  qint32 LInRR, LOutRR, LInOLS, LOutOLS;
140  Vector3d Origin;
141  MatrixXd BInX, BInY, BInZ, BOutX, BOutY, BOutZ;
142  MatrixXd EqnInRR, EqnOutRR, EqnIn, EqnOut, EqnARR, EqnA, EqnB;
143 
144  VectorXd R, PHI, THETA;
145  VectorXd R_X, R_Y, R_Z;
146  VectorXd PHI_X, PHI_Y, PHI_Z;
147  VectorXd THETA_X, THETA_Y, THETA_Z;
148 
149 // FiffInfo::SPtr m_pFiffInfo; /**< Fiff information. */
150 };
151 
152 #endif // RTSSSALGO_H
QSharedPointer< FiffInfo > SPtr
Definition: fiff_info.h:99
FiffInfo class declaration.
Definition: fiff.h:98
FIFF class declaration, which provides static wrapper functions to stay consistent with mne matlab to...