v2.0.0
Loading...
Searching...
No Matches
filterkernel.h
Go to the documentation of this file.
1//=============================================================================================================
36
37#ifndef FILTERKERNEL_H
38#define FILTERKERNEL_H
39
40//=============================================================================================================
41// INCLUDES
42//=============================================================================================================
43
44#include "dsp_global.h"
45//#include "filter.h"
46
47//=============================================================================================================
48// EIGEN INCLUDES
49//=============================================================================================================
50
51#include <Eigen/Core>
52
53//=============================================================================================================
54// QT INCLUDES
55//=============================================================================================================
56
57#include <QString>
58#include <QMetaType>
59#include <QVector>
60#include <QDebug>
61
62//=============================================================================================================
63// DEFINE NAMESPACE UTILSLIB
64//=============================================================================================================
65
66namespace UTILSLIB
67{
68
69//=============================================================================================================
74
75public:
76 //=========================================================================================================
80 explicit FilterParameter();
81
82 //=========================================================================================================
88 explicit FilterParameter(QString sName);
89
90 //=========================================================================================================
97 explicit FilterParameter(QString sName, QString sDescription);
98
99 //=========================================================================================================
105 QString getName() const;
106
107 friend bool operator == (const FilterParameter& in1, const FilterParameter& in2){
108 //qDebug() << in1.getName() << in2.getName();
109 return (in1.getName() == in2.getName());
110 }
111protected:
112 QString m_sName;
114};
115
116//=============================================================================================================
123{
124
125public:
126 //=========================================================================================================
130 FilterKernel();
131
132 //=========================================================================================================
145 FilterKernel(const QString &sFilterName,
146 int iFilterType,
147 int iOrder,
148 double dCenterfreq,
149 double dBandwidth,
150 double dParkswidth,
151 double dSFreq,
152 int iDesignMethod);
153
154 //=========================================================================================================
164 void prepareFilter(int iDataSize);
165
166 //=========================================================================================================
176 Eigen::RowVectorXd applyConvFilter(const Eigen::RowVectorXd& vecData,
177 bool bKeepOverhead = false) const;
178
179 //=========================================================================================================
189 void applyFftFilter(Eigen::RowVectorXd& vecData,
190 bool bKeepOverhead = false);
191
192 QString getName() const;
193 void setName(const QString& sFilterName);
194
195 double getSamplingFrequency() const;
196 void setSamplingFrequency(double dSFreq);
197
198 int getFilterOrder() const;
199 void setFilterOrder(int iOrder);
200
201 double getCenterFrequency() const;
202 void setCenterFrequency(double dCenterFreq);
203
204 double getBandwidth() const;
205 void setBandwidth(double dBandwidth);
206
207 double getParksWidth() const;
208 void setParksWidth(double dParksWidth);
209
210 double getHighpassFreq() const;
211 void setHighpassFreq(double dHighpassFreq);
212
213 double getLowpassFreq() const;
214 void setLowpassFreq(double dLowpassFreq);
215
216 Eigen::RowVectorXd getCoefficients() const;
217 void setCoefficients(const Eigen::RowVectorXd& vecCoeff);
218
219 Eigen::RowVectorXcd getFftCoefficients() const;
220 void setFftCoefficients(const Eigen::RowVectorXcd& vecFftCoeff);
221
223 void setDesignMethod(int iDesignMethod);
224
226 void setFilterType(int iFilterType);
227
228 QString getShortDescription() const;
229
230 static QVector<FilterParameter> m_designMethods;
231 static QVector<FilterParameter> m_filterTypes;
232
233private:
234 //=========================================================================================================
240 bool fftTransformCoeffs(int iFftLength);
241
242 //=========================================================================================================
246 void designFilter();
247
248 double m_sFreq;
249 double m_dCenterFreq;
250 double m_dBandwidth;
251 double m_dParksWidth;
252 double m_dLowpassFreq;
253 double m_dHighpassFreq;
254
255 int m_iFilterOrder;
256 int m_iDesignMethod;
257 int m_iFilterType;
258
259 QString m_sFilterName;
260 QString m_sFilterShortDescription;
261
262 Eigen::RowVectorXd m_vecCoeff;
263 Eigen::RowVectorXcd m_vecFftCoeff;
264};
265
266} // NAMESPACE UTILSLIB
267
268#ifndef metatype_filterkernel
269#define metatype_filterkernel
271#endif
272
273#ifndef metatype_filterparameter
274#define metatype_filterkernel
276#endif
277
278#endif // FILTERKERNEL_H
Q_DECLARE_METATYPE(Eigen::MatrixXf)
bool operator==(const BIDSPath &a, const BIDSPath &b)
Export/import macros and namespace declaration for the DSP library.
#define DSPSHARED_EXPORT
Definition dsp_global.h:50
Shared utilities (I/O helpers, spectral analysis, layout management, warp algorithms).
Named filter-design parameter descriptor holding a human-readable name and description (e....
The FilterKernel class provides methods to create/design a FIR filter kernel.
double getBandwidth() const
void setSamplingFrequency(double dSFreq)
double getParksWidth() const
double getCenterFrequency() const
void setCenterFrequency(double dCenterFreq)
double getSamplingFrequency() const
QString getShortDescription() const
Eigen::RowVectorXcd getFftCoefficients() const
void applyFftFilter(Eigen::RowVectorXd &vecData, bool bKeepOverhead=false)
void setHighpassFreq(double dHighpassFreq)
void setCoefficients(const Eigen::RowVectorXd &vecCoeff)
QString getName() const
static QVector< FilterParameter > m_designMethods
Eigen::RowVectorXd applyConvFilter(const Eigen::RowVectorXd &vecData, bool bKeepOverhead=false) const
void setBandwidth(double dBandwidth)
void prepareFilter(int iDataSize)
void setFilterOrder(int iOrder)
void setFftCoefficients(const Eigen::RowVectorXcd &vecFftCoeff)
void setParksWidth(double dParksWidth)
FilterKernel()
FilterKernel creates a default FilterKernel object.
void setLowpassFreq(double dLowpassFreq)
static QVector< FilterParameter > m_filterTypes
void setName(const QString &sFilterName)
Eigen::RowVectorXd getCoefficients() const
double getLowpassFreq() const
void setFilterType(int iFilterType)
double getHighpassFreq() const
FilterParameter getDesignMethod() const
void setDesignMethod(int iDesignMethod)
FilterParameter getFilterType() const