24#include <QtConcurrent>
57 qWarning() <<
"[RtCov::estimateCovariance] FiffInfo was not set. Returning empty covariance estimation.";
64 for(
int i = 0; i <
m_fiffInfo.chs.size(); i++) {
75 MatrixXd matPicked(
m_picks.size(), matData.cols());
76 for(
int i = 0; i <
m_picks.size(); i++) {
77 matPicked.row(i) = matData.row(
m_picks[i]);
89 QFuture<RtCovComputeResult> result = QtConcurrent::mappedReduced(
m_lData,
93 result.waitForFinished();
105 computedCov.
data.array() -=
m_iSamples * (finalResult.
mu * finalResult.
mu.transpose()).array();
109 computedCov.
diag =
false;
110 computedCov.
dim = computedCov.
data.rows();
113 QStringList pickedNames;
115 for(
int i = 0; i <
m_picks.size(); i++) {
121 computedCov.
names = pickedNames;
145 qWarning() <<
"[RtCov::estimateCovariance] Number of samples equals zero. Regularization not possible. Returning empty covariance estimation.";
156 result.
mu = matData.rowwise().sum();
157 result.
matData = matData * matData.transpose();
165 if(finalResult.
matData.size() == 0 || finalResult.
mu.size() == 0) {
166 finalResult.
mu = tempResult.
mu;
169 finalResult.
mu += tempResult.
mu;
#define FIFFV_MNE_NOISE_COV
Real-time noise covariance estimation from streaming MEG / EEG data blocks.
FIFF file I/O, in-memory data structures and high-level readers/writers.
Bundled output of a real-time covariance computation step containing the covariance matrix and sample...
QList< Eigen::MatrixXd > m_lData
RtCov(QSharedPointer< FIFFLIB::FiffInfo > pFiffInfo)
FIFFLIB::FiffCov estimateCovariance(const Eigen::MatrixXd &matData, int iNewMaxSamples)
FIFFLIB::FiffInfo m_fiffInfo
static void reduce(RtCovComputeResult &finalResult, const RtCovComputeResult &tempResult)
static RtCovComputeResult compute(const Eigen::MatrixXd &matData)
FIFF noise / data covariance: matrix, channel names, kind, applied projectors, bads,...
FiffCov regularize(const FiffInfo &p_info, double p_fMag=0.1, double p_fGrad=0.1, double p_fEeg=0.1, bool p_bProj=true, QStringList p_exclude=defaultQStringList) const