80 const double nyquist = dSFreq / 2.0;
82 double dCenterfreq = 0.0;
83 double dBandwidth = 0.0;
84 const double dParkswidth = dTransition / nyquist;
86 int iFilterType =
static_cast<int>(type);
91 dCenterfreq = dCutoffLow / nyquist;
96 dCenterfreq = (dCutoffLow + dCutoffHigh) / dSFreq;
97 dBandwidth = (dCutoffHigh - dCutoffLow) / nyquist;
103 case LowPass: sName = QStringLiteral(
"LP_%1Hz").arg(dCutoffLow);
break;
104 case HighPass: sName = QStringLiteral(
"HP_%1Hz").arg(dCutoffLow);
break;
105 case BandPass: sName = QStringLiteral(
"BP_%1-%2Hz").arg(dCutoffLow).arg(dCutoffHigh);
break;
106 case BandStop: sName = QStringLiteral(
"BS_%1-%2Hz").arg(dCutoffLow).arg(dCutoffHigh);
break;
116 static_cast<int>(method));
124 RowVectorXd work = vecData;
135 RowVectorXd work = vecData;
139 RowVectorXd rev = work.reverse();
142 return rev.reverse();
149 const RowVectorXi& vecPicks)
151 MatrixXd result = matData;
153 if (vecPicks.size() == 0) {
155 for (
int i = 0; i < result.rows(); ++i) {
156 RowVectorXd row = result.row(i);
160 for (
int k = 0; k < vecPicks.size(); ++k) {
162 if (i < 0 || i >= result.rows())
continue;
163 RowVectorXd row = result.row(i);
Declaration of FirFilter — a discoverable façade over the existing FilterKernel FIR API.
Shared utilities (I/O helpers, spectral analysis, layout management, warp algorithms).
The FilterKernel class provides methods to create/design a FIR filter kernel.
void applyFftFilter(Eigen::RowVectorXd &vecData, bool bKeepOverhead=false)
FilterType
FIR filter type — mirrors IirFilter::FilterType for a uniform API.
static Eigen::MatrixXd applyZeroPhaseMatrix(const Eigen::MatrixXd &matData, FilterKernel &kernel, const Eigen::RowVectorXi &vecPicks=Eigen::RowVectorXi())
DesignMethod
FIR design method — wraps FilterKernel's iDesignMethod integer codes.
static Eigen::RowVectorXd applyZeroPhase(const Eigen::RowVectorXd &vecData, FilterKernel &kernel)
static FilterKernel design(int iOrder, FilterType type, double dCutoffLow, double dCutoffHigh, double dSFreq, double dTransition=5.0, DesignMethod method=Cosine)
static Eigen::RowVectorXd apply(const Eigen::RowVectorXd &vecData, FilterKernel &kernel)