diff src/DLD-FUNCTIONS/filter.cc @ 10350:12884915a8e4

merge MArray classes & improve Array interface
author Jaroslav Hajek <highegg@gmail.com>
date Sat, 23 Jan 2010 21:41:03 +0100
parents edfceeab945a
children 89f4d7e294cc
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/filter.cc	Mon Feb 22 23:07:21 2010 -0500
+++ b/src/DLD-FUNCTIONS/filter.cc	Sat Jan 23 21:41:03 2010 +0100
@@ -40,34 +40,34 @@
 #include "oct-obj.h"
 
 #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL)
-extern MArrayN<double>
-filter (MArray<double>&, MArray<double>&, MArrayN<double>&, int dim);
+extern MArray<double>
+filter (MArray<double>&, MArray<double>&, MArray<double>&, int dim);
 
-extern MArrayN<Complex>
-filter (MArray<Complex>&, MArray<Complex>&, MArrayN<Complex>&, int dim);
+extern MArray<Complex>
+filter (MArray<Complex>&, MArray<Complex>&, MArray<Complex>&, int dim);
 
-extern MArrayN<float>
-filter (MArray<float>&, MArray<float>&, MArrayN<float>&, int dim);
+extern MArray<float>
+filter (MArray<float>&, MArray<float>&, MArray<float>&, int dim);
 
-extern MArrayN<FloatComplex>
-filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArrayN<FloatComplex>&, int dim);
+extern MArray<FloatComplex>
+filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArray<FloatComplex>&, int dim);
 #endif
 
 template <class T>
-MArrayN<T>
-filter (MArray<T>& b, MArray<T>& a, MArrayN<T>& x, MArrayN<T>& si, 
+MArray<T>
+filter (MArray<T>& b, MArray<T>& a, MArray<T>& x, MArray<T>& si, 
         int dim = 0)
 {
-  MArrayN<T> y;
+  MArray<T> y;
 
   octave_idx_type a_len  = a.length ();
   octave_idx_type b_len  = b.length ();
 
   octave_idx_type ab_len = a_len > b_len ? a_len : b_len;
 
-  b.resize (ab_len, 0.0);
+  b.resize (ab_len, 1, 0.0);
   if (a_len > 1)
-    a.resize (ab_len, 0.0);
+    a.resize (ab_len, 1, 0.0);
 
   T norm = a (0);
 
@@ -227,26 +227,26 @@
 }
 
 #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL)
-extern MArrayN<double>
-filter (MArray<double>&, MArray<double>&, MArrayN<double>&,
-        MArrayN<double>&, int dim);
+extern MArray<double>
+filter (MArray<double>&, MArray<double>&, MArray<double>&,
+        MArray<double>&, int dim);
 
-extern MArrayN<Complex>
-filter (MArray<Complex>&, MArray<Complex>&, MArrayN<Complex>&,
-        MArrayN<Complex>&, int dim);
+extern MArray<Complex>
+filter (MArray<Complex>&, MArray<Complex>&, MArray<Complex>&,
+        MArray<Complex>&, int dim);
 
-extern MArrayN<float>
-filter (MArray<float>&, MArray<float>&, MArrayN<float>&,
-        MArrayN<float>&, int dim);
+extern MArray<float>
+filter (MArray<float>&, MArray<float>&, MArray<float>&,
+        MArray<float>&, int dim);
 
-extern MArrayN<FloatComplex>
-filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArrayN<FloatComplex>&,
-        MArrayN<FloatComplex>&, int dim);
+extern MArray<FloatComplex>
+filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArray<FloatComplex>&,
+        MArray<FloatComplex>&, int dim);
 #endif
 
 template <class T>
-MArrayN<T>
-filter (MArray<T>& b, MArray<T>& a, MArrayN<T>& x, int dim = -1)
+MArray<T>
+filter (MArray<T>& b, MArray<T>& a, MArray<T>& x, int dim = -1)
 {
   dim_vector x_dims = x.dims();
 
@@ -264,7 +264,7 @@
     if (dim < 0 || dim > x_dims.length ())
       {
         error ("filter: filtering over invalid dimension");
-        return MArrayN<T> ();
+        return MArray<T> ();
       }
 
   octave_idx_type a_len = a.length ();
@@ -276,7 +276,7 @@
     si_dims(i) = si_dims(i-1);
   si_dims(0) = si_len;
   
-  MArrayN<T> si (si_dims, T (0.0));
+  MArray<T> si (si_dims, T (0.0));
 
   return filter (b, a, x, si, dim);
 }
@@ -654,33 +654,33 @@
   return retval;
 }
 
-template MArrayN<double>
-filter (MArray<double>&, MArray<double>&, MArrayN<double>&,
-        MArrayN<double>&, int dim);
+template MArray<double>
+filter (MArray<double>&, MArray<double>&, MArray<double>&,
+        MArray<double>&, int dim);
 
-template MArrayN<double>
-filter (MArray<double>&, MArray<double>&, MArrayN<double>&, int dim);
+template MArray<double>
+filter (MArray<double>&, MArray<double>&, MArray<double>&, int dim);
 
-template MArrayN<Complex>
-filter (MArray<Complex>&, MArray<Complex>&, MArrayN<Complex>&,
-        MArrayN<Complex>&, int dim);
+template MArray<Complex>
+filter (MArray<Complex>&, MArray<Complex>&, MArray<Complex>&,
+        MArray<Complex>&, int dim);
 
-template MArrayN<Complex>
-filter (MArray<Complex>&, MArray<Complex>&, MArrayN<Complex>&, int dim);
+template MArray<Complex>
+filter (MArray<Complex>&, MArray<Complex>&, MArray<Complex>&, int dim);
 
-template MArrayN<float>
-filter (MArray<float>&, MArray<float>&, MArrayN<float>&,
-        MArrayN<float>&, int dim);
+template MArray<float>
+filter (MArray<float>&, MArray<float>&, MArray<float>&,
+        MArray<float>&, int dim);
 
-template MArrayN<float>
-filter (MArray<float>&, MArray<float>&, MArrayN<float>&, int dim);
+template MArray<float>
+filter (MArray<float>&, MArray<float>&, MArray<float>&, int dim);
 
-template MArrayN<FloatComplex>
-filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArrayN<FloatComplex>&,
-        MArrayN<FloatComplex>&, int dim);
+template MArray<FloatComplex>
+filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArray<FloatComplex>&,
+        MArray<FloatComplex>&, int dim);
 
-template MArrayN<FloatComplex>
-filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArrayN<FloatComplex>&, int dim);
+template MArray<FloatComplex>
+filter (MArray<FloatComplex>&, MArray<FloatComplex>&, MArray<FloatComplex>&, int dim);
 
 /*
 %!shared a, b, x, r