43 #include "../inverse_global.h" 44 #include "../IInverseAlgorithm.h" 73 #define NOT_TRANSPOSED 0 74 #define IS_TRANSPOSED 1 76 //============================================================================================================= 95 typedef QSharedPointer<RapMusic>
SPtr;
103 typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
MatrixXT;
105 typedef Eigen::Matrix<double, Eigen::Dynamic, 6>
MatrixX6T;
107 typedef Eigen::Matrix<double, 6, Eigen::Dynamic>
Matrix6XT;
111 typedef Eigen::Matrix<double, Eigen::Dynamic, 1>
VectorXT;
151 virtual MNELIB::MNESourceEstimate calculateInverse(
const Eigen::MatrixXd &data,
float tmin,
float tstep,
bool pick_normal =
false)
const;
155 virtual const char* getName()
const;
166 void setStcAttr(
int p_iSampStcWin,
float p_fStcOverlap);
178 int calcPhi_s(
const MatrixXT& p_matMeasurement, MatrixXT* &p_pMatPhi_s)
const;
193 static double subcorr(MatrixX6T& p_matProj_G,
const MatrixXT& p_pMatU_B);
211 static double subcorr(MatrixX6T& p_matProj_G,
const MatrixXT& p_matU_B, Vector6T& p_vec_phi_k_1);
223 static void calcA_k_1(
const MatrixX6T& p_matG_k_1,
224 const Vector6T& p_matPhi_k_1,
226 MatrixXT& p_matA_k_1);
235 void calcOrthProj(
const MatrixXT& p_matA_k_1, MatrixXT& p_matOrthProj)
const;
248 void calcPairCombinations(
const int p_iNumPoints,
249 const int p_iNumCombinations,
250 Pair** p_ppPairIdxCombinations)
const;
268 static void getPointPair(
const int p_iPoints,
const int p_iCurIdx,
int &p_iIdx1,
int &p_iIdx2);
279 static void getGainMatrixPair(
const MatrixXT& p_matGainMarix,
280 MatrixX6T& p_matGainMarix_Pair,
281 int p_iIdx1,
int p_iIdx2);
293 static void insertSource(
int p_iDipoleIdx1,
int p_iDipoleIdx2,
294 const Vector6T &p_vec_phi_k_1,
327 static inline int getRank(
const MatrixXT& p_matSigma);
339 static inline int useFullRank(
const MatrixXT& p_Mat,
340 const MatrixXT& p_matSigma_src,
341 MatrixXT& p_matFull_Rank,
351 static inline MatrixXT makeSquareMat(
const MatrixXT& p_matF);
363 for(t_iRank = p_matSigma.rows()-1; t_iRank > 0; t_iRank--)
364 if (p_matSigma(t_iRank, t_iRank) > 0.00001)
379 int rank = getRank(p_matSigma_src);
382 p_matFull_Rank = p_Mat.block(0,0,p_Mat.rows(),rank);
384 p_matFull_Rank = p_Mat.block(0,0,rank,p_Mat.cols());
Eigen::Matrix< double, 6, 6 > Matrix6T
static int useFullRank(const MatrixXT &p_Mat, const MatrixXT &p_matSigma_src, MatrixXT &p_matFull_Rank, int type=NOT_TRANSPOSED)
#define INVERSESHARED_EXPORT
Eigen::Matrix< double, 6, Eigen::Dynamic > Matrix6XT
MNESourceEstimate class declaration.
QSharedPointer< RapMusic > SPtr
int m_iNumLeadFieldCombinations
The RapMusic class provides the RAP MUSIC Algorithm CPU implementation. ToDo: Paper references...
static int getRank(const MatrixXT &p_matSigma)
Source Space descritpion.
Inverse algorithm interface.
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixXT
MNEForwardSolution class declaration, which provides the forward solution including the source space ...
static MatrixXT makeSquareMat(const MatrixXT &p_matF)
Eigen::Matrix< double, Eigen::Dynamic, 6 > MatrixX6T
Eigen::Matrix< double, 6, 1 > Vector6T
MNELIB::MNEForwardSolution m_ForwardSolution
QSharedPointer< const RapMusic > ConstSPtr
Eigen::Matrix< double, Eigen::Dynamic, 1 > VectorXT
Pair ** m_ppPairIdxCombinations