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//=============================================================================================================
76{
77public:
78 //=========================================================================================================
82 explicit FilterParameter();
83
84 //=========================================================================================================
90 explicit FilterParameter(QString sName);
91
92 //=========================================================================================================
99 explicit FilterParameter(QString sName, QString sDescription);
100
101 //=========================================================================================================
107 QString getName() const;
108
109 friend bool operator==(const FilterParameter& in1, const FilterParameter& in2)
110 {
111 //qDebug() << in1.getName() << in2.getName();
112 return (in1.getName() == in2.getName());
113 }
114
115protected:
116 QString m_sName;
118};
119
120//=============================================================================================================
129{
130public:
131 //=========================================================================================================
135 FilterKernel();
136
137 //=========================================================================================================
150 FilterKernel(const QString& sFilterName,
151 int iFilterType,
152 int iOrder,
153 double dCenterfreq,
154 double dBandwidth,
155 double dParkswidth,
156 double dSFreq,
157 int iDesignMethod);
158
159 //=========================================================================================================
169 void prepareFilter(int iDataSize);
170
171 //=========================================================================================================
181 Eigen::RowVectorXd applyConvFilter(const Eigen::RowVectorXd& vecData,
182 bool bKeepOverhead = false) const;
183
184 //=========================================================================================================
192 void applyFftFilter(Eigen::RowVectorXd& vecData,
193 bool bKeepOverhead = false);
194
195 QString getName() const;
196 void setName(const QString& sFilterName);
197
198 double getSamplingFrequency() const;
199 void setSamplingFrequency(double dSFreq);
200
201 int getFilterOrder() const;
202 void setFilterOrder(int iOrder);
203
204 double getCenterFrequency() const;
205 void setCenterFrequency(double dCenterFreq);
206
207 double getBandwidth() const;
208 void setBandwidth(double dBandwidth);
209
210 double getParksWidth() const;
211 void setParksWidth(double dParksWidth);
212
213 double getHighpassFreq() const;
214 void setHighpassFreq(double dHighpassFreq);
215
216 double getLowpassFreq() const;
217 void setLowpassFreq(double dLowpassFreq);
218
219 Eigen::RowVectorXd getCoefficients() const;
220 void setCoefficients(const Eigen::RowVectorXd& vecCoeff);
221
222 Eigen::RowVectorXcd getFftCoefficients() const;
223 void setFftCoefficients(const Eigen::RowVectorXcd& vecFftCoeff);
224
226 void setDesignMethod(int iDesignMethod);
227
229 void setFilterType(int iFilterType);
230
231 QString getShortDescription() const;
232
233 static QVector<FilterParameter> m_designMethods;
234 static QVector<FilterParameter> m_filterTypes;
235
236private:
237 //=========================================================================================================
243 bool fftTransformCoeffs(int iFftLength);
244
245 //=========================================================================================================
249 void designFilter();
250
251 double m_sFreq;
252 double m_dCenterFreq;
253 double m_dBandwidth;
254 double m_dParksWidth;
255 double m_dLowpassFreq;
256 double m_dHighpassFreq;
257
258 int m_iFilterOrder;
259 int m_iDesignMethod;
260 int m_iFilterType;
261
262 QString m_sFilterName;
263 QString m_sFilterShortDescription;
264
265 Eigen::RowVectorXd m_vecCoeff;
266 Eigen::RowVectorXcd m_vecFftCoeff;
267};
268
269} // NAMESPACE UTILSLIB
270
271#ifndef metatype_filterkernel
272#define metatype_filterkernel
274#endif
275
276#ifndef metatype_filterparameter
277#define metatype_filterkernel
279#endif
280
281#endif // FILTERKERNEL_H
Q_DECLARE_METATYPE(Eigen::MatrixXf)
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....
friend bool operator==(const FilterParameter &in1, const FilterParameter &in2)
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