26#include <QRegularExpression>
48 if (!path.contains(
".txt"))
52 if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
53 qDebug() <<
"Error opening filter txt file for reading";
58 QTextStream in(&file);
59 QVector<double> coefficientsTemp;
62 QString line = in.readLine();
64 QStringList fields = line.split(QRegularExpression(
"\\s+"));
67 if (fields.at(fields.size() - 1) ==
"")
70 if (line.contains(
"#"))
73 if (line.contains(
"sFreq") && fields.size() == 2)
77 if (line.contains(
"name")) {
79 for (
int i = 1; i < fields.size(); i++)
80 sFilterName.append(fields.at(i));
85 if (line.contains(
"order") && fields.size() == 2)
89 if (line.contains(
"type") && fields.size() == 2)
93 if (line.contains(
"LPFreq") && fields.size() == 2)
97 if (line.contains(
"HPFreq") && fields.size() == 2)
101 if (line.contains(
"CenterFreq") && fields.size() == 2)
105 if (line.contains(
"DesignMethod") && fields.size() == 2)
108 if (line.contains(
"ParksWidth") && fields.size() == 2)
112 coefficientsTemp.push_back(fields.join(
"").toDouble());
119 RowVectorXd vecCoeff = RowVectorXd::Zero(coefficientsTemp.size());
120 for (
int i = 0; i < vecCoeff.cols(); i++) {
121 vecCoeff(i) = coefficientsTemp.at(i);
135 if (!path.isEmpty()) {
137 if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
138 qDebug() <<
"Error opening filter txt file for writing";
143 QTextStream out(&file);
146 out <<
"#name " << filter.
getName() <<
"\n";
163 qDebug() <<
"Error Filter File path is empty";
Plain-text serialisation of UTILSLIB::FilterKernel coefficient sets.
Shared utilities (I/O helpers, spectral analysis, layout management, warp algorithms).
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 getParksWidth() const
double getCenterFrequency() const
void setCenterFrequency(double dCenterFreq)
double getSamplingFrequency() const
void setHighpassFreq(double dHighpassFreq)
void setCoefficients(const Eigen::RowVectorXd &vecCoeff)
static QVector< FilterParameter > m_designMethods
void setFilterOrder(int iOrder)
void setParksWidth(double dParksWidth)
void setLowpassFreq(double dLowpassFreq)
static QVector< FilterParameter > m_filterTypes
void setName(const QString &sFilterName)
int getFilterOrder() const
Eigen::RowVectorXd getCoefficients() const
double getLowpassFreq() const
void setFilterType(int iFilterType)
double getHighpassFreq() const
FilterParameter getDesignMethod() const
void setDesignMethod(int iDesignMethod)
FilterParameter getFilterType() const