44 #include "../inverse_global.h"
62 #include <QSharedPointer>
76 class FiffDigPointSet;
87 class HpiModelParameters;
98 Eigen::VectorXd dpfiterror;
99 Eigen::VectorXd dpfitnumitr;
102 : pos(Eigen::MatrixXd(iNumCoils,3)),
103 mom(Eigen::MatrixXd::Zero(iNumCoils,3)),
104 dpfiterror(Eigen::VectorXd::Zero(iNumCoils)),
105 dpfitnumitr(Eigen::VectorXd::Zero(iNumCoils))
113 QVector<int> hpiFreqs;
116 QVector<double> errorDistances;
118 QString sFilePathDigitzers;
119 bool bIsLargeHeadMovement;
120 float fHeadMovementDistance;
121 float fHeadMovementAngle;
138 typedef QSharedPointer<HPIFit>
SPtr;
162 void checkForUpdate(
const SensorSet& sensorSet);
175 void fit(
const Eigen::MatrixXd& matProjectedData,
176 const Eigen::MatrixXd& matProjectors,
178 const Eigen::MatrixXd& matCoilsHead,
181 void fit(
const Eigen::MatrixXd& matProjectedData,
182 const Eigen::MatrixXd& matProjectors,
184 const Eigen::MatrixXd& matCoilsHead,
185 const bool bOrderFrequencies,
202 static void storeHeadPosition(
float fTime,
203 const Eigen::MatrixXf& matTransDevHead,
204 Eigen::MatrixXd& matPosition,
205 const Eigen::VectorXd& vecGoF,
206 const QVector<double>& vecError);
219 Eigen::MatrixXd computeAmplitudes(
const Eigen::MatrixXd& matProjectedData,
232 Eigen::MatrixXd computeSeedPoints(
const Eigen::MatrixXd& matAmplitudes,
234 const QVector<double>& vecError,
235 const Eigen::MatrixXd& matCoilsHead);
251 CoilParam dipfit(
const Eigen::MatrixXd matCoilsSeed,
253 const Eigen::MatrixXd &matData,
255 const Eigen::MatrixXd &t_matProjectors,
256 const int iMaxIterations,
257 const float fAbortError);
266 Eigen::VectorXd computeGoF(
const Eigen::VectorXd& vecDipFitError);
280 const Eigen::MatrixXd& matCoilsHead);
291 QVector<double> computeEstimationError(
const Eigen::MatrixXd& matCoilsDev,
292 const Eigen::MatrixXd& matCoilsHead,
314 Eigen::Matrix4d computeTransformation(Eigen::MatrixXd matNH,
315 Eigen::MatrixXd matBT);
326 std::vector<int> findCoilOrder(
const Eigen::MatrixXd& matCoilsDev,
327 const Eigen::MatrixXd& matCoilsHead);
338 Eigen::MatrixXd order(
const std::vector<int>& vecOrder,
339 const Eigen::MatrixXd& matToOrder);
341 QVector<int> order(
const std::vector<int>& vecOrder,
342 const QVector<int>& vecToOrder);
354 double objectTrans(
const Eigen::MatrixXd& matHeadCoil,
355 const Eigen::MatrixXd& matCoilsDev,
356 const Eigen::MatrixXd& matTrans);
369 #ifndef metatype_HpiFitResult
370 #define metatype_HpiFitResult