MNE-CPP 0.1.9
A Framework for Electrophysiology
Loading...
Searching...
No Matches
filter.h
Go to the documentation of this file.
1//=============================================================================================================
36#ifndef FILTER_RTPROCESSING_H
37#define FILTER_RTPROCESSING_H
38
39//=============================================================================================================
40// INCLUDES
41//=============================================================================================================
42
43#include "rtprocessing_global.h"
44
46
47#include <fiff/fiff_info.h>
48
49//=============================================================================================================
50// QT INCLUDES
51//=============================================================================================================
52
53#include <QSharedPointer>
54#include <QtConcurrent/QtConcurrent>
55
56//=============================================================================================================
57// EIGEN INCLUDES
58//=============================================================================================================
59
60#include <Eigen/Core>
61#include <unsupported/Eigen/FFT>
62
63//=============================================================================================================
64// FORWARD DECLARATIONS
65//=============================================================================================================
66
67namespace FIFFLIB {
68 class FiffRawData;
69}
70
71//=============================================================================================================
72// DEFINE NAMESPACE RTPROCESSINGLIB
73//=============================================================================================================
74
75namespace RTPROCESSINGLIB
76{
77
78typedef struct {
79 FilterKernel filterKernel;
80 int iRow;
81 Eigen::RowVectorXd vecData;
83
84//=========================================================================================================
102RTPROCESINGSHARED_EXPORT bool filterFile(QIODevice& pIODevice,
103 QSharedPointer<FIFFLIB::FiffRawData> pFiffRawData,
104 int type,
105 double dCenterfreq,
106 double dBandwidth,
107 double dTransition,
108 double dSFreq,
109 int iOrder = 4096,
110 int designMethod = FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")),
111 const Eigen::RowVectorXi &vecPicks = Eigen::RowVectorXi(),
112 bool bUseThreads = true);
113
114//=========================================================================================================
127RTPROCESINGSHARED_EXPORT bool filterFile(QIODevice& pIODevice,
128 QSharedPointer<FIFFLIB::FiffRawData> pFiffRawData,
129 const RTPROCESSINGLIB::FilterKernel& filterKernel,
130 const Eigen::RowVectorXi &vecPicks = Eigen::RowVectorXi(),
131 bool bUseThreads = false);
132
133//=========================================================================================================
152RTPROCESINGSHARED_EXPORT Eigen::MatrixXd filterData(const Eigen::MatrixXd& matData,
153 int type,
154 double dCenterfreq,
155 double dBandwidth,
156 double dTransition,
157 double dSFreq,
158 int iOrder = 1024,
159 int designMethod = FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")),
160 const Eigen::RowVectorXi &vecPicks = Eigen::RowVectorXi(),
161 bool bUseThreads = true,
162 bool bKeepOverhead = false);
163
164//=========================================================================================================
177RTPROCESINGSHARED_EXPORT Eigen::MatrixXd filterData(const Eigen::MatrixXd& mataData,
178 const RTPROCESSINGLIB::FilterKernel& filterKernel,
179 const Eigen::RowVectorXi& vecPicks = Eigen::RowVectorXi(),
180 bool bUseThreads = true,
181 bool bKeepOverhead = false);
182
183//=========================================================================================================
195RTPROCESINGSHARED_EXPORT Eigen::MatrixXd filterDataBlock(const Eigen::MatrixXd& mataData,
196 const Eigen::RowVectorXi& vecPicks,
197 const RTPROCESSINGLIB::FilterKernel& filterKernel,
198 bool bUseThreads = true);
199
200//=========================================================================================================
207
208//=============================================================================================================
216{
217public:
218 typedef QSharedPointer<FilterOverlapAdd> SPtr;
219 typedef QSharedPointer<const FilterOverlapAdd> ConstSPtr;
221 //=========================================================================================================
240 Eigen::MatrixXd calculate(const Eigen::MatrixXd& matData,
241 int type,
242 double dCenterfreq,
243 double dBandwidth,
244 double dTransition,
245 double dSFreq,
246 int iOrder = 1024,
247 int designMethod = FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")),
248 const Eigen::RowVectorXi &vecPicks = Eigen::RowVectorXi(),
249 bool bFilterEnd = true,
250 bool bUseThreads = true,
251 bool bKeepOverhead = false);
252
253 //=========================================================================================================
266 Eigen::MatrixXd calculate(const Eigen::MatrixXd& mataData,
267 const RTPROCESSINGLIB::FilterKernel& filterKernel,
268 const Eigen::RowVectorXi& vecPicks = Eigen::RowVectorXi(),
269 bool bFilterEnd = true,
270 bool bUseThreads = true,
271 bool bKeepOverhead = false);
272
273 //=========================================================================================================
277 void reset();
278
279private:
280 Eigen::MatrixXd m_matOverlapBack;
281 Eigen::MatrixXd m_matOverlapFront;
282};
283
284//=============================================================================================================
285// INLINE DEFINITIONS
286//=============================================================================================================
287
288} // NAMESPACE
289
290#endif // FILTER_RTPROCESSING_H
realtime library export/import macros.
#define RTPROCESINGSHARED_EXPORT
The FilterKernel class represents a filter object that generates the FIR filter coefficients using Pa...
RTPROCESINGSHARED_EXPORT Eigen::MatrixXd filterData(const Eigen::MatrixXd &matData, int type, double dCenterfreq, double dBandwidth, double dTransition, double dSFreq, int iOrder=1024, int designMethod=FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")), const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi(), bool bUseThreads=true, bool bKeepOverhead=false)
RTPROCESINGSHARED_EXPORT bool filterFile(QIODevice &pIODevice, QSharedPointer< FIFFLIB::FiffRawData > pFiffRawData, int type, double dCenterfreq, double dBandwidth, double dTransition, double dSFreq, int iOrder=4096, int designMethod=FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")), const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi(), bool bUseThreads=true)
RTPROCESINGSHARED_EXPORT Eigen::MatrixXd filterDataBlock(const Eigen::MatrixXd &mataData, const Eigen::RowVectorXi &vecPicks, const RTPROCESSINGLIB::FilterKernel &filterKernel, bool bUseThreads=true)
RTPROCESINGSHARED_EXPORT void filterChannel(FilterObject &channelDataTime)
Definition filter.cpp:376
FiffInfo class declaration.
Filtering with FFT convolution and the overlap add method for continous data streams.
Definition filter.h:216
Eigen::MatrixXd calculate(const Eigen::MatrixXd &mataData, const RTPROCESSINGLIB::FilterKernel &filterKernel, const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi(), bool bFilterEnd=true, bool bUseThreads=true, bool bKeepOverhead=false)
QSharedPointer< const FilterOverlapAdd > ConstSPtr
Definition filter.h:219
QSharedPointer< FilterOverlapAdd > SPtr
Definition filter.h:218
Eigen::MatrixXd calculate(const Eigen::MatrixXd &matData, int type, double dCenterfreq, double dBandwidth, double dTransition, double dSFreq, int iOrder=1024, int designMethod=FilterKernel::m_designMethods.indexOf(FilterParameter("Cosine")), const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi(), bool bFilterEnd=true, bool bUseThreads=true, bool bKeepOverhead=false)
The FilterParameter class.
The FilterKernel class provides methods to create/design a FIR filter kernel.
static QVector< FilterParameter > m_designMethods