Classes | |
class | itpp::Filter< T1, T2, T3 > |
Virtual Filter Base Class.
The class is templated as follows:. More... | |
class | itpp::MA_Filter< T1, T2, T3 > |
Moving Average Filter Base Class. This class implements a moving average (MA) filter according to
where b is the filter coefficients, x is the input and y is the output. More... | |
class | itpp::AR_Filter< T1, T2, T3 > |
Autoregressive (AR) Filter Base Class. This class implements a autoregressive (AR) filter according to
where a is the filter coefficients, x is the input and y is the output. More... | |
class | itpp::ARMA_Filter< T1, T2, T3 > |
Autoregressive Moving Average (ARMA) Filter Base Class. This class implements a autoregressive moving average (ARMA) filter according to
. More... | |
class | itpp::Freq_Filt< Num_T > |
Freq_Filt Frequency domain filtering using the overlap-add technique
The Freq_Filt class implements an FFT based filter using the overlap-add technique. The data is filtered by first transforming the input sequence into the frequency domain with an efficient FFT implementation (i.e. FFTW) and then multiplied with a Fourier transformed version of the impulse response. The resulting data is then inversed Fourier transformed to return a filtered time domain signal. More... | |
void | itpp::freqz (const cvec &b, const cvec &a, const int N, cvec &h, vec &w) |
Frequency response of filter. | |
cvec | itpp::freqz (const cvec &b, const cvec &a, const int N) |
Frequency response of filter. | |
cvec | itpp::freqz (const cvec &b, const cvec &a, const vec &w) |
Frequency response of filter. | |
void | itpp::freqz (const vec &b, const vec &a, const int N, cvec &h, vec &w) |
Frequency response of filter. | |
cvec | itpp::freqz (const vec &b, const vec &a, const int N) |
Frequency response of filter. | |
cvec | itpp::freqz (const vec &b, const vec &a, const vec &w) |
Frequency response of filter. | |
Functions | |
vec | itpp::filter (const vec &b, const vec &a, const vec &input) |
ARMA filter function These functions implements a autoregressive moving average (ARMA) filter according to
| |
cvec | itpp::filter (const vec &b, const vec &a, const cvec &input) |
cvec | itpp::filter (const cvec &b, const cvec &a, const cvec &input) |
cvec | itpp::filter (const cvec &b, const cvec &a, const vec &input) |
vec | itpp::filter (const vec &b, const int one, const vec &input) |
cvec | itpp::filter (const vec &b, const int one, const cvec &input) |
cvec | itpp::filter (const cvec &b, const int one, const cvec &input) |
cvec | itpp::filter (const cvec &b, const int one, const vec &input) |
vec | itpp::filter (const int one, const vec &a, const vec &input) |
cvec | itpp::filter (const int one, const vec &a, const cvec &input) |
cvec | itpp::filter (const int one, const cvec &a, const cvec &input) |
cvec | itpp::filter (const int one, const cvec &a, const vec &input) |
vec | itpp::filter (const vec &b, const vec &a, const vec &input, const vec &state_in, vec &state_out) |
cvec | itpp::filter (const vec &b, const vec &a, const cvec &input, const cvec &state_in, cvec &state_out) |
cvec | itpp::filter (const cvec &b, const cvec &a, const cvec &input, const cvec &state_in, cvec &state_out) |
cvec | itpp::filter (const cvec &b, const cvec &a, const vec &input, const cvec &state_in, cvec &state_out) |
vec | itpp::filter (const vec &b, const int one, const vec &input, const vec &state_in, vec &state_out) |
cvec | itpp::filter (const vec &b, const int one, const cvec &input, const cvec &state_in, cvec &state_out) |
cvec | itpp::filter (const cvec &b, const int one, const cvec &input, const cvec &state_in, cvec &state_out) |
cvec | itpp::filter (const cvec &b, const int one, const vec &input, const cvec &state_in, cvec &state_out) |
vec | itpp::filter (const int one, const vec &a, const vec &input, const vec &state_in, vec &state_out) |
cvec | itpp::filter (const int one, const vec &a, const cvec &input, const cvec &state_in, cvec &state_out) |
cvec | itpp::filter (const int one, const cvec &a, const cvec &input, const cvec &state_in, cvec &state_out) |
cvec | itpp::filter (const int one, const cvec &a, const vec &input, const cvec &state_in, cvec &state_out) |
vec | itpp::fir1 (int N, double cutoff) |
Design a Nth order FIR filter with cut-off frequency cutoff using the window method. | |
void | itpp::polystab (const vec &a, vec &out) |
Polynomial Stabilization. | |
vec | itpp::polystab (const vec &a) |
void | itpp::polystab (const cvec &a, cvec &out) |
cvec | itpp::polystab (const cvec &a) |
void | itpp::filter_design_autocorrelation (const int N, const vec &f, const vec &m, vec &R) |
Calculate autocorrelation from the specified frequency-response (suitable for filter design). | |
void | itpp::modified_yule_walker (const int m, const int n, const int N, const vec &R, vec &a) |
Estimation of AR-part in an ARMA model given the autocorrelation. | |
void | itpp::arma_estimator (const int m, const int n, const vec &R, vec &b, vec &a) |
Estimation of ARMA model given the autocorrelation. | |
void | itpp::yulewalk (const int N, const vec &f, const vec &m, vec &b, vec &a) |
ARMA filter design using a least-squares fit to the specified frequency-response. |
ARMA filter function
These functions implements a autoregressive moving average (ARMA) filter according to
.
where a and b are the filter coefficients, x is the input and y is the output.
Setting a=1 gives a MA filter and b=1 gives a AR filter. The length of the output vector equals the length of the input vector. The state vectors state_in and state_out is of length .
If no start state state_in is given it is set to zero.
Definition at line 41 of file filter.cpp.
Referenced by itpp::arma_estimator().
vec itpp::fir1 | ( | int | N, | |
double | cutoff | |||
) |
Design a Nth order FIR filter with cut-off frequency cutoff
using the window method.
Definition at line 244 of file filter.cpp.
References itpp::hamming(), itpp::length(), itpp::sinc(), and itpp::sum().
Polynomial Stabilization.
Definition at line 46 of file filter_design.cpp.
References itpp::abs(), itpp::conj(), itpp::poly(), itpp::real(), and itpp::roots().
Referenced by itpp::modified_yule_walker(), and itpp::polystab().
Frequency response of filter.
If w
is supplied polyval() is used. Otherwise the calculation is based on the fft.
Definition at line 72 of file filter_design.cpp.
References itpp::elem_div(), itpp::fft(), itpp::linspace(), and itpp::pi.
Referenced by itpp::freqz().
Calculate autocorrelation from the specified frequency-response (suitable for filter design).
N
corresponding to the specified frequency response. Useful as a first step in designing filters.
The vectors f
and m
is the frequency response. The frequencies should be between 0 and 1.0 (equal to half the sample rate) in increasing order. Both 0.0 and 1.0 must be included. The frequency response is upsampled to 512 points and the autocorrelation is ifft of the power magnitude response of the upsampled frequency response.
Definition at line 154 of file filter_design.cpp.
References itpp::concat(), itpp::floor_i(), itpp::ifft_real(), it_assert, itpp::reverse(), itpp::sqr(), and itpp::to_cvec().
Referenced by itpp::yulewalk().
Estimation of AR-part in an ARMA model given the autocorrelation.
n
. The overdetermined modified Yule-Walker equations are used.
If then the system is overdetermined and a least squares solution is used. As a rule of thumb use
The parameter m
is the order of the MA-part such that .
The supplied autocorrelation should at least be of size N
.
References: Stoica and Moses, Introduction to spectral analysis, Prentice Hall, 1997.
Definition at line 198 of file filter_design.cpp.
References itpp::abs(), itpp::backslash(), itpp::concat(), it_assert, itpp::polystab(), itpp::reverse(), and itpp::toeplitz().
Referenced by itpp::arma_estimator().
Estimation of ARMA model given the autocorrelation.
n
and the MA part is of order m
.The AR part (the denominator) is calcuated using the modified Yule-Walker equations. The the MA part (the nominator) is calculated by calculating the inverse magnitude spectrum using FFTs of size 512 which is an AR-system. This AR-system is then solved using the Levinson-Durbin algorithm.
The supplied autocorrelation is windowed using a Hamming window of size and hence should at least be of that size.
References: [1] Stoica and Moses, Introduction to spectral analysis, Prentice Hall, 1997. [2] B. Friedlander and B. Porat, The modified Yule-Walker method of ARMA spectral estimation, IEEE Trans. Aerospace and Electronic Systems, Vol. AES-20, No. 2, pp. 158--173, March 1984.
Definition at line 229 of file filter_design.cpp.
References itpp::backslash(), itpp::concat(), itpp::cos(), itpp::elem_div(), itpp::elem_mult(), itpp::exp(), itpp::fft(), itpp::fft_real(), itpp::filter(), itpp::ifft(), it_assert, itpp::linspace(), itpp::log(), itpp::modified_yule_walker(), itpp::pi, itpp::real(), itpp::to_cmat(), itpp::to_cvec(), itpp::toeplitz(), itpp::zeros(), and itpp::zeros_c().
Referenced by itpp::yulewalk().
ARMA filter design using a least-squares fit to the specified frequency-response.
The vectors f
and m
is the frequency response. The frequencies should be between 0 and 1.0 (equal to half the sample rate) in increasing order. Both 0.0 and 1.0 must be included. The filter_design_autocorrelation() fucnction is used to interpolate the frequency response and calculate the corresponding autocorrelation.
Observe: this function will not always give exactly the same result as the matlab yulewalk function.
Definition at line 270 of file filter_design.cpp.
References itpp::arma_estimator(), itpp::filter_design_autocorrelation(), and it_assert.
Frequency response of filter.
If w
is supplied polyval() is used. Otherwise the calculation is based on the fft.
Definition at line 86 of file filter_design.cpp.
References itpp::freqz().
Frequency response of filter.
If w
is supplied polyval() is used. Otherwise the calculation is based on the fft.
Definition at line 97 of file filter_design.cpp.
References itpp::cos(), itpp::elem_div(), max, itpp::polyval(), itpp::sin(), itpp::to_cvec(), and itpp::zero_pad().
Frequency response of filter.
If w
is supplied polyval() is used. Otherwise the calculation is based on the fft.
Definition at line 112 of file filter_design.cpp.
References itpp::elem_div(), itpp::fft_real(), itpp::linspace(), and itpp::pi.
Frequency response of filter.
If w
is supplied polyval() is used. Otherwise the calculation is based on the fft.
Definition at line 126 of file filter_design.cpp.
References itpp::freqz().
Frequency response of filter.
If w
is supplied polyval() is used. Otherwise the calculation is based on the fft.
Definition at line 137 of file filter_design.cpp.
References itpp::cos(), itpp::elem_div(), max, itpp::polyval(), itpp::sin(), itpp::to_cvec(), and itpp::zero_pad().
Generated on Wed Mar 21 12:22:06 2007 for IT++ by Doxygen 1.4.7