49#include <QRegularExpression>
71 if(!path.contains(
".txt"))
75 if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
76 qDebug()<<
"Error opening filter txt file for reading";
81 QTextStream in(&file);
82 QVector<double> coefficientsTemp;
86 QString line = in.readLine();
88 QStringList fields = line.split(QRegularExpression(
"\\s+"));
91 if(fields.at(fields.size()-1) ==
"")
94 if(line.contains(
"#"))
97 if(line.contains(
"sFreq") && fields.size()==2)
101 if(line.contains(
"name")) {
103 for(
int i=1; i<fields.size(); i++)
104 sFilterName.append(fields.at(i));
109 if(line.contains(
"order") && fields.size()==2)
113 if(line.contains(
"type") && fields.size()==2)
117 if(line.contains(
"LPFreq") && fields.size()==2)
121 if(line.contains(
"HPFreq") && fields.size()==2)
125 if(line.contains(
"CenterFreq") && fields.size()==2)
129 if(line.contains(
"DesignMethod") && fields.size()==2)
133 coefficientsTemp.push_back(fields.join(
"").toDouble());
140 RowVectorXd vecCoeff = RowVectorXd::Zero(coefficientsTemp.size());
141 for(
int i=0; i < vecCoeff.cols(); i++) {
142 vecCoeff(i) = coefficientsTemp.at(i);
159 if (!file.open(QIODevice::WriteOnly | QIODevice::Text)){
160 qDebug()<<
"Error opening filter txt file for writing";
165 QTextStream out(&file);
168 out <<
"#name " << filter.
getName() <<
"\n";
184 qDebug()<<
"Error Filter File path is empty";
FilterIO class declaration.
Real-time signal processing (filtering, averaging, HPI fitting, noise reduction).
static bool readFilter(QString path, FilterKernel &filter)
static bool writeFilter(const QString &path, const FilterKernel &filter)
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.
void setSamplingFrequency(double dSFreq)
double getCenterFrequency() const
void setCenterFrequency(double dCenterFreq)
double getSamplingFrequency() const
void setHighpassFreq(double dHighpassFreq)
void setCoefficients(const Eigen::RowVectorXd &vecCoeff)
void setFilterOrder(int iOrder)
void setLowpassFreq(double dLowpassFreq)
void setName(const QString &sFilterName)
FilterParameter getDesignMethod() const
int getFilterOrder() const
Eigen::RowVectorXd getCoefficients() const
double getLowpassFreq() const
void setFilterType(int iFilterType)
double getHighpassFreq() const
static QVector< FilterParameter > m_designMethods
static QVector< FilterParameter > m_filterTypes
void setDesignMethod(int iDesignMethod)
FilterParameter getFilterType() const