39 vec
filter(
const vec &b,
const vec &a,
const vec &input)
45 cvec
filter(
const vec &b,
const vec &a,
const cvec &input)
51 cvec
filter(
const cvec &b,
const cvec &a,
const cvec &input)
57 cvec
filter(
const cvec &b,
const cvec &a,
const vec &input)
64 vec
filter(
const vec &b,
const int one,
const vec &input)
66 it_assert(one == 1,
"filter(): in a MA filter a=1");
71 cvec
filter(
const vec &b,
const int one,
const cvec &input)
73 it_assert(one == 1,
"filter(): in a MA filter a=1");
78 cvec
filter(
const cvec &b,
const int one,
const cvec &input)
80 it_assert(one == 1,
"filter(): in a MA filter a=1");
85 cvec
filter(
const cvec &b,
const int one,
const vec &input)
87 it_assert(one == 1,
"filter(): in a MA filter a=1");
93 vec
filter(
const int one,
const vec &a,
const vec &input)
95 it_assert(one == 1,
"filter(): in a AR filter b=1");
100 cvec
filter(
const int one,
const vec &a,
const cvec &input)
102 it_assert(one == 1,
"filter(): in a AR filter b=1");
107 cvec
filter(
const int one,
const cvec &a,
const cvec &input)
109 it_assert(one == 1,
"filter(): in a AR filter b=1");
114 cvec
filter(
const int one,
const cvec &a,
const vec &input)
116 it_assert(one == 1,
"filter(): in a AR filter b=1");
125 vec
filter(
const vec &b,
const vec &a,
const vec &input,
const vec &state_in, vec &state_out)
129 vec output = f(input);
134 cvec
filter(
const vec &b,
const vec &a,
const cvec &input,
const cvec &state_in, cvec &state_out)
138 cvec output = f(input);
143 cvec
filter(
const cvec &b,
const cvec &a,
const cvec &input,
const cvec &state_in, cvec &state_out)
147 cvec output = f(input);
152 cvec
filter(
const cvec &b,
const cvec &a,
const vec &input,
const cvec &state_in, cvec &state_out)
156 cvec output = f(input);
162 vec
filter(
const vec &b,
const int one,
const vec &input,
const vec &state_in, vec &state_out)
164 it_assert(one == 1,
"filter(): in a MA filter a=1");
167 vec output = f(input);
172 cvec
filter(
const vec &b,
const int one,
const cvec &input,
const cvec &state_in, cvec &state_out)
174 it_assert(one == 1,
"filter(): in a MA filter a=1");
177 cvec output = f(input);
182 cvec
filter(
const cvec &b,
const int one,
const cvec &input,
const cvec &state_in, cvec &state_out)
184 it_assert(one == 1,
"filter(): in a MA filter a=1");
187 cvec output = f(input);
192 cvec
filter(
const cvec &b,
const int one,
const vec &input,
const cvec &state_in, cvec &state_out)
194 it_assert(one == 1,
"filter(): in a MA filter a=1");
197 cvec output = f(input);
203 vec
filter(
const int one,
const vec &a,
const vec &input,
const vec &state_in, vec &state_out)
205 it_assert(one == 1,
"filter(): in a AR filter b=1");
208 vec output = f(input);
213 cvec
filter(
const int one,
const vec &a,
const cvec &input,
const cvec &state_in, cvec &state_out)
215 it_assert(one == 1,
"filter(): in a AR filter b=1");
218 cvec output = f(input);
223 cvec
filter(
const int one,
const cvec &a,
const cvec &input,
const cvec &state_in, cvec &state_out)
225 it_assert(one == 1,
"filter(): in a AR filter b=1");
228 cvec output = f(input);
233 cvec
filter(
const int one,
const cvec &a,
const vec &input,
const cvec &state_in, cvec &state_out)
235 it_assert(one == 1,
"filter(): in a AR filter b=1");
238 cvec output = f(input);
245 vec a(N + 1), h =
hamming(N + 1);
247 for (
int i = 0;i <
length(a);i++) {
248 a[i] = h[i] *
sinc(cutoff * (i - N / 2.0));
254 template class ITPP_EXPORT MA_Filter<double, double, double>;
255 template class ITPP_EXPORT MA_Filter < double, std::complex<double>,
256 std::complex<double> >;
257 template class ITPP_EXPORT MA_Filter<std::complex<double>, double, std::complex<double> >;
258 template class ITPP_EXPORT MA_Filter < std::complex<double>, std::complex<double>,
259 std::complex<double> >;
261 template class ITPP_EXPORT AR_Filter<double, double, double>;
262 template class ITPP_EXPORT AR_Filter < double, std::complex<double>,
263 std::complex<double> >;
264 template class ITPP_EXPORT AR_Filter < std::complex<double>, double,
265 std::complex<double> >;
266 template class ITPP_EXPORT AR_Filter < std::complex<double>, std::complex<double>,
267 std::complex<double> >;
269 template class ITPP_EXPORT ARMA_Filter<double, double, double>;
270 template class ITPP_EXPORT ARMA_Filter < double, std::complex<double>,
271 std::complex<double> >;
272 template class ITPP_EXPORT ARMA_Filter < std::complex<double>, double,
273 std::complex<double> >;
274 template class ITPP_EXPORT ARMA_Filter < std::complex<double>, std::complex<double>,
275 std::complex<double> >;
Vec< T3 > get_state() const
Get state of filter.
void set_state(const Vec< T3 > &state)
Set state of filter.
Various functions on vectors and matrices - header file.
Autoregressive (AR) Filter Base Class.This class implements a autoregressive (AR) filter according to...
vec hamming(int n)
Hamming window.
Definitions of window functions.
Definitions of Filter classes and functions.
double sinc(double x)
Sinc function: sinc(x) = sin(pi*x)/pi*x.
T sum(const Vec< T > &v)
Sum of all elements in the vector.
vec fir1(int N, double cutoff)
Design a Nth order FIR filter with cut-off frequency cutoff using the window method.
#define it_assert(t, s)
Abort if t is not true.
int length(const Vec< T > &v)
Length of vector.
void set_state(const Vec< T3 > &state)
Set state of filter.
Trigonometric and hyperbolic functions - header file.
Moving Average Filter Base Class.This class implements a moving average (MA) filter according to whe...
vec filter(const vec &b, const vec &a, const vec &input)
ARMA filter functionThese functions implements a autoregressive moving average (ARMA) filter accordin...
Autoregressive Moving Average (ARMA) Filter Base Class.This class implements a autoregressive moving ...
void set_state(const Vec< T3 > &state)
Set state of filter.
Vec< T3 > get_state() const
Get state of filter.
Vec< T3 > get_state() const
Get state of filter.