IT++ Logo
filter.cpp
Go to the documentation of this file.
00001 
00029 #include <itpp/signal/filter.h>
00030 #include <itpp/signal/window.h>
00031 #include <itpp/base/matfunc.h>
00032 #include <itpp/base/math/trig_hyp.h>
00033 
00034 
00035 namespace itpp
00036 {
00037 
00038 
00039 vec filter(const vec &b, const vec &a, const vec &input)
00040 {
00041   ARMA_Filter<double, double, double> f(b, a);
00042   return f(input);
00043 }
00044 
00045 cvec filter(const vec &b, const vec &a, const cvec &input)
00046 {
00047   ARMA_Filter<std::complex<double>, double, std::complex<double> > f(b, a);
00048   return f(input);
00049 }
00050 
00051 cvec filter(const cvec &b, const cvec &a, const cvec &input)
00052 {
00053   ARMA_Filter<std::complex<double>, std::complex<double>, std::complex<double> > f(b, a);
00054   return f(input);
00055 }
00056 
00057 cvec filter(const cvec &b, const cvec &a, const vec &input)
00058 {
00059   ARMA_Filter<double, std::complex<double>, std::complex<double> > f(b, a);
00060   return f(input);
00061 }
00062 
00063 
00064 vec filter(const vec &b, const int one, const vec &input)
00065 {
00066   it_assert(one == 1, "filter(): in a MA filter a=1");
00067   MA_Filter<double, double, double> f(b);
00068   return f(input);
00069 }
00070 
00071 cvec filter(const vec &b, const int one, const cvec &input)
00072 {
00073   it_assert(one == 1, "filter(): in a MA filter a=1");
00074   MA_Filter<std::complex<double>, double, std::complex<double> > f(b);
00075   return f(input);
00076 }
00077 
00078 cvec filter(const cvec &b, const int one, const cvec &input)
00079 {
00080   it_assert(one == 1, "filter(): in a MA filter a=1");
00081   MA_Filter<std::complex<double>, std::complex<double>, std::complex<double> > f(b);
00082   return f(input);
00083 }
00084 
00085 cvec filter(const cvec &b, const int one, const vec &input)
00086 {
00087   it_assert(one == 1, "filter(): in a MA filter a=1");
00088   MA_Filter<double, std::complex<double>, std::complex<double> > f(b);
00089   return f(input);
00090 }
00091 
00092 
00093 vec filter(const int one, const vec &a, const vec &input)
00094 {
00095   it_assert(one == 1, "filter(): in a AR filter b=1");
00096   AR_Filter<double, double, double> f(a);
00097   return f(input);
00098 }
00099 
00100 cvec filter(const int one, const vec &a, const cvec &input)
00101 {
00102   it_assert(one == 1, "filter(): in a AR filter b=1");
00103   AR_Filter<std::complex<double>, double, std::complex<double> > f(a);
00104   return f(input);
00105 }
00106 
00107 cvec filter(const int one, const cvec &a, const cvec &input)
00108 {
00109   it_assert(one == 1, "filter(): in a AR filter b=1");
00110   AR_Filter<std::complex<double>, std::complex<double>, std::complex<double> > f(a);
00111   return f(input);
00112 }
00113 
00114 cvec filter(const int one, const cvec &a, const vec &input)
00115 {
00116   it_assert(one == 1, "filter(): in a AR filter b=1");
00117   AR_Filter<double, std::complex<double>, std::complex<double> > f(a);
00118   return f(input);
00119 }
00120 
00121 
00122 
00123 
00124 
00125 vec filter(const vec &b, const vec &a, const vec &input, const vec &state_in, vec &state_out)
00126 {
00127   ARMA_Filter<double, double, double> f(b, a);
00128   f.set_state(state_in);
00129   vec output = f(input);
00130   state_out = f.get_state();
00131   return output;
00132 }
00133 
00134 cvec filter(const vec &b, const vec &a, const cvec &input, const cvec &state_in, cvec &state_out)
00135 {
00136   ARMA_Filter<std::complex<double>, double, std::complex<double> > f(b, a);
00137   f.set_state(state_in);
00138   cvec output = f(input);
00139   state_out = f.get_state();
00140   return output;
00141 }
00142 
00143 cvec filter(const cvec &b, const cvec &a, const cvec &input, const cvec &state_in, cvec &state_out)
00144 {
00145   ARMA_Filter<std::complex<double>, std::complex<double>, std::complex<double> > f(b, a);
00146   f.set_state(state_in);
00147   cvec output = f(input);
00148   state_out = f.get_state();
00149   return output;
00150 }
00151 
00152 cvec filter(const cvec &b, const cvec &a, const vec &input, const cvec &state_in, cvec &state_out)
00153 {
00154   ARMA_Filter<double, std::complex<double>, std::complex<double> > f(b, a);
00155   f.set_state(state_in);
00156   cvec output = f(input);
00157   state_out = f.get_state();
00158   return output;
00159 }
00160 
00161 
00162 vec filter(const vec &b, const int one, const vec &input, const vec &state_in, vec &state_out)
00163 {
00164   it_assert(one == 1, "filter(): in a MA filter a=1");
00165   MA_Filter<double, double, double> f(b);
00166   f.set_state(state_in);
00167   vec output = f(input);
00168   state_out = f.get_state();
00169   return output;
00170 }
00171 
00172 cvec filter(const vec &b, const int one, const cvec &input, const cvec &state_in, cvec &state_out)
00173 {
00174   it_assert(one == 1, "filter(): in a MA filter a=1");
00175   MA_Filter<std::complex<double>, double, std::complex<double> > f(b);
00176   f.set_state(state_in);
00177   cvec output = f(input);
00178   state_out = f.get_state();
00179   return output;
00180 }
00181 
00182 cvec filter(const cvec &b, const int one, const cvec &input, const cvec &state_in, cvec &state_out)
00183 {
00184   it_assert(one == 1, "filter(): in a MA filter a=1");
00185   MA_Filter<std::complex<double>, std::complex<double>, std::complex<double> > f(b);
00186   f.set_state(state_in);
00187   cvec output = f(input);
00188   state_out = f.get_state();
00189   return output;
00190 }
00191 
00192 cvec filter(const cvec &b, const int one, const vec &input, const cvec &state_in, cvec &state_out)
00193 {
00194   it_assert(one == 1, "filter(): in a MA filter a=1");
00195   MA_Filter<double, std::complex<double>, std::complex<double> > f(b);
00196   f.set_state(state_in);
00197   cvec output = f(input);
00198   state_out = f.get_state();
00199   return output;
00200 }
00201 
00202 
00203 vec filter(const int one, const vec &a, const vec &input, const vec &state_in, vec &state_out)
00204 {
00205   it_assert(one == 1, "filter(): in a AR filter b=1");
00206   AR_Filter<double, double, double> f(a);
00207   f.set_state(state_in);
00208   vec output = f(input);
00209   state_out = f.get_state();
00210   return output;
00211 }
00212 
00213 cvec filter(const int one, const vec &a, const cvec &input, const cvec &state_in, cvec &state_out)
00214 {
00215   it_assert(one == 1, "filter(): in a AR filter b=1");
00216   AR_Filter<std::complex<double>, double, std::complex<double> > f(a);
00217   f.set_state(state_in);
00218   cvec output = f(input);
00219   state_out = f.get_state();
00220   return output;
00221 }
00222 
00223 cvec filter(const int one, const cvec &a, const cvec &input, const cvec &state_in, cvec &state_out)
00224 {
00225   it_assert(one == 1, "filter(): in a AR filter b=1");
00226   AR_Filter<std::complex<double>, std::complex<double>, std::complex<double> > f(a);
00227   f.set_state(state_in);
00228   cvec output = f(input);
00229   state_out = f.get_state();
00230   return output;
00231 }
00232 
00233 cvec filter(const int one, const cvec &a, const vec &input, const cvec &state_in, cvec &state_out)
00234 {
00235   it_assert(one == 1, "filter(): in a AR filter b=1");
00236   AR_Filter<double, std::complex<double>, std::complex<double> > f(a);
00237   f.set_state(state_in);
00238   cvec output = f(input);
00239   state_out = f.get_state();
00240   return output;
00241 }
00242 
00243 vec fir1(int N, double cutoff)
00244 {
00245   vec a(N + 1), h = hamming(N + 1);
00246 
00247   for (int i = 0;i < length(a);i++) {
00248     a[i] = h[i] * sinc(cutoff * (i - N / 2.0));
00249   }
00250   a /= sum(a);
00251   return a;
00252 }
00253 
00254 template class MA_Filter<double, double, double>;
00255 template class MA_Filter < double, std::complex<double>,
00256 std::complex<double> >;
00257 template class MA_Filter<std::complex<double>, double, std::complex<double> >;
00258 template class MA_Filter < std::complex<double>, std::complex<double>,
00259 std::complex<double> >;
00260 
00261 template class AR_Filter<double, double, double>;
00262 template class AR_Filter < double, std::complex<double>,
00263 std::complex<double> >;
00264 template class AR_Filter < std::complex<double>, double,
00265 std::complex<double> >;
00266 template class AR_Filter < std::complex<double>, std::complex<double>,
00267 std::complex<double> >;
00268 
00269 template class ARMA_Filter<double, double, double>;
00270 template class ARMA_Filter < double, std::complex<double>,
00271 std::complex<double> >;
00272 template class ARMA_Filter < std::complex<double>, double,
00273 std::complex<double> >;
00274 template class ARMA_Filter < std::complex<double>, std::complex<double>,
00275 std::complex<double> >;
00276 
00277 } // namespace itpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
SourceForge Logo

Generated on Wed Jul 27 2011 16:27:05 for IT++ by Doxygen 1.7.4