IT++ Logo

filter.cpp

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

Generated on Sat Feb 26 2011 16:06:34 for IT++ by Doxygen 1.7.3