66 CosineFilter::CosineFilter(
int fftLength,
float lowpass,
float lowpass_width,
float highpass,
float highpass_width,
double sFreq, TPassType type)
68 int highpasss,lowpasss;
69 int highpass_widths,lowpass_widths;
71 int resp_size = fftLength/2+1;
73 double pi4 = M_PI/4.0;
76 RowVectorXcd filterFreqResp = RowVectorXcd::Ones(resp_size);
79 highpasss = ((resp_size-1)*highpass)/(0.5*sFreq);
80 lowpasss = ((resp_size-1)*lowpass)/(0.5*sFreq);
82 lowpass_widths = ((resp_size-1)*lowpass_width)/(0.5*sFreq);
83 lowpass_widths = (lowpass_widths+1)/2;
85 if (highpass_width > 0.0) {
86 highpass_widths = ((resp_size-1)*highpass_width)/(0.5*sFreq);
87 highpass_widths = (highpass_widths+1)/2;
95 if (highpasss > highpass_widths + 1) {
100 for (k = 0; k < highpasss-w+1; k++)
101 filterFreqResp(k) = 0.0;
103 for (k = -w+1, s = highpasss-w+1; k < w; k++, s++) {
104 if (s >= 0 && s < resp_size) {
105 c = cos(pi4*(k*mult+add));
106 filterFreqResp(s) = filterFreqResp(s).real()*c*c;
114 if (lowpass_widths > 0) {
119 for (k = -w+1, s = lowpasss-w+1; k < w; k++, s++) {
120 if (s >= 0 && s < resp_size) {
121 c = cos(pi4*(k*mult+add));
122 filterFreqResp(s) = filterFreqResp(s).real()*c*c;
126 for (k = s; k < resp_size; k++)
127 filterFreqResp(k) = 0.0;
130 for (k = lowpasss; k < resp_size; k++)
131 filterFreqResp(k) = 0.0;
138 Eigen::FFT<double> fft;
139 fft.SetFlag(fft.HalfSpectrum);
Declaration of the CosineFilter class.
RowVectorXcd m_dFFTCoeffA