38 const MatrixXi& events,
45 if (events.rows() == 0 || events.cols() < 3 || data.cols() == 0 || data.rows() == 0) {
49 const int iMinOffset =
static_cast<int>(std::round(tmin * sfreq));
50 const int iMaxOffset =
static_cast<int>(std::round(tmax * sfreq));
51 const int iNumCols =
static_cast<int>(data.cols());
52 const int iNumRows =
static_cast<int>(data.rows());
54 for (
int e = 0; e < events.rows(); ++e) {
56 if (eventId >= 0 && events(e, 2) != eventId) {
61 int iStart = events(e, 0) + iMinOffset;
62 int iEnd = events(e, 0) + iMaxOffset;
65 iStart = std::max(0, iStart);
66 iEnd = std::min(iNumCols - 1, iEnd);
72 const int iWindowLen = iEnd - iStart + 1;
76 for (
int ch = 0; ch < iNumRows; ++ch) {
77 const double dStartVal = data(ch, iStart);
78 const double dEndVal = data(ch, iEnd);
79 for (
int s = 0; s < iWindowLen; ++s) {
80 const double dAlpha =
static_cast<double>(s) /
static_cast<double>(iWindowLen - 1);
81 data(ch, iStart + s) = dStartVal + dAlpha * (dEndVal - dStartVal);
87 data.block(0, iStart, iNumRows, iWindowLen).setZero();
Declaration of fixStimArtifact — stimulus artifact repair by interpolation or zeroing.
Shared utilities (I/O helpers, spectral analysis, layout management, warp algorithms).
StimArtifactMode
Mode for stimulus artifact repair.
DSPSHARED_EXPORT void fixStimArtifact(Eigen::MatrixXd &data, const Eigen::MatrixXi &events, double sfreq, int eventId=-1, double tmin=0.0, double tmax=0.01, StimArtifactMode mode=StimArtifactMode::Linear)
Repair stimulus artifacts by interpolating or zeroing data around events.