59 FilterOperator::FilterOperator()
67 FilterOperator::FilterOperator(QString unique_name, FilterType type,
int order,
double centerfreq,
double bandwidth,
double parkswidth,
double sFreq, qint32 fftlength, DesignMethod designMethod)
70 , m_iFilterOrder(order)
71 , m_iFFTlength(fftlength)
72 , m_dCenterFreq(centerfreq)
73 , m_dBandwidth(bandwidth)
75 , m_designMethod(designMethod)
76 , m_sName(unique_name)
78 switch(designMethod) {
80 ParksMcClellan filter(order, centerfreq, bandwidth, parkswidth, (ParksMcClellan::TPassType)type);
97 (centerfreq)*(sFreq/2),
99 (centerfreq)*(sFreq/2),
100 parkswidth*(sFreq/2),
102 (CosineFilter::TPassType)type);
105 case FilterType::HPF:
107 (centerfreq)*(sFreq/2),
108 parkswidth*(sFreq/2),
109 (centerfreq)*(sFreq/2),
110 parkswidth*(sFreq/2),
112 (CosineFilter::TPassType)type);
115 case FilterType::BPF:
117 (centerfreq + bandwidth/2)*(sFreq/2),
118 parkswidth*(sFreq/2),
119 (centerfreq - bandwidth/2)*(sFreq/2),
120 parkswidth*(sFreq/2),
122 (CosineFilter::TPassType)type);
137 FilterOperator::~FilterOperator()
148 RowVectorXd t_coeffAzeroPad = RowVectorXd::Zero(
m_iFFTlength);
152 Eigen::FFT<double> fft;
153 fft.SetFlag(fft.HalfSpectrum);
166 RowVectorXd t_dataZeroPad = RowVectorXd::Zero(
m_iFFTlength);
170 Eigen::FFT<double> fft;
171 fft.SetFlag(fft.HalfSpectrum);
174 RowVectorXcd t_freqData;
175 fft.fwd(t_freqData,t_dataZeroPad);
178 RowVectorXcd t_filteredFreq =
m_dFFTCoeffA.array()*t_freqData.array();
181 RowVectorXd t_filteredTime;
182 fft.inv(t_filteredTime,t_filteredFreq);
185 return t_filteredTime;
The FilterOperator class represents a derived class from an arbitrary MNEOperator class object...
RowVectorXcd m_dFFTCoeffA
RowVectorXd applyFFTFilter(const RowVectorXd &data) const
Creates a cosine filter response in the frequency domain.
RowVectorXcd m_dFFTCoeffA
void fftTransformCoeffs()