changeset 12566:3b0eb443c519

Fix orientation of initial conditions vector for filter (bug #32741). Revamp test vectors.
author Rik <octave@nomad.inbox5.com>
date Fri, 01 Apr 2011 18:53:14 -0700
parents 0f71b9639207
children cc8ccdfec424
files src/ChangeLog src/DLD-FUNCTIONS/filter.cc
diffstat 2 files changed, 48 insertions(+), 46 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Fri Apr 01 09:37:58 2011 -0700
+++ b/src/ChangeLog	Fri Apr 01 18:53:14 2011 -0700
@@ -1,3 +1,8 @@
+2011-04-01  Rik  <octave@nomad.inbox5.com>
+
+	* DLD-FUNCTIONS/filter.cc: Fix orientation of initial conditions vector
+	(bug #32741).  Revamp test vectors.
+
 2011-04-01  Rik  <octave@nomad.inbox5.com>
 
 	* DLD-FUNCTIONS/__fltk_uigetfile__.cc, DLD-FUNCTIONS/__init_fltk__.cc:
--- a/src/DLD-FUNCTIONS/filter.cc	Fri Apr 01 09:37:58 2011 -0700
+++ b/src/DLD-FUNCTIONS/filter.cc	Fri Apr 01 18:53:14 2011 -0700
@@ -64,10 +64,6 @@
 
   octave_idx_type ab_len = a_len > b_len ? a_len : b_len;
 
-  b.resize (dim_vector (ab_len, 1), 0.0);
-  if (a_len > 1)
-    a.resize (dim_vector (ab_len, 1), 0.0);
-
   T norm = a (0);
 
   if (norm == static_cast<T>(0.0))
@@ -464,7 +460,7 @@
                   si = args(3).float_complex_array_value ();
 
                   if (si_is_vector)
-                    si = si.reshape (dim_vector (si.numel (), 1));
+                    si = si.reshape (dim_vector (1, si.numel ()));
                 }
 
               if (! error_state)
@@ -521,7 +517,7 @@
                   si = args(3).complex_array_value ();
 
                   if (si_is_vector)
-                    si = si.reshape (dim_vector (si.numel (), 1));
+                    si = si.reshape (dim_vector (1, si.numel ()));
                 }
 
               if (! error_state)
@@ -581,7 +577,7 @@
                   si = args(3).float_array_value ();
 
                   if (si_is_vector)
-                    si = si.reshape (dim_vector (si.numel (), 1));
+                    si = si.reshape (dim_vector (1, si.numel ()));
                 }
 
               if (! error_state)
@@ -638,7 +634,7 @@
                   si = args(3).array_value ();
 
                   if (si_is_vector)
-                    si = si.reshape (dim_vector (si.numel (), 1));
+                    si = si.reshape (dim_vector (1, si.numel ()));
                 }
 
               if (! error_state)
@@ -694,58 +690,59 @@
 %!test
 %!  a = [1 1];
 %!  b = [1 1];
-%!  x = zeros(1,10); x(1) = 1;
-%!  assert(all(filter(b,   [1], x  ) == [1 1 0 0 0 0 0 0 0 0]  ))
-%!  assert(all(filter(b,   [1], x.') == [1 1 0 0 0 0 0 0 0 0].'))
-%!  assert(all(filter(b.', [1], x  ) == [1 1 0 0 0 0 0 0 0 0]  ))
-%!  assert(all(filter(b.', [1], x.') == [1 1 0 0 0 0 0 0 0 0].'))
-%!  assert(all(filter([1], a,   x  ) == [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1]  ))
-%!  assert(all(filter([1], a,   x.') == [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1].'))
-%!  assert(all(filter([1], a.', x  ) == [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1]  ))
-%!  assert(all(filter([1], a.', x.') == [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1].'))
-%!  assert(all(filter(b,   a,   x  ) == [1 0 0 0 0 0 0 0 0 0]  ))
-%!  assert(all(filter(b.', a,   x  ) == [1 0 0 0 0 0 0 0 0 0]  ))
-%!  assert(all(filter(b,   a.', x  ) == [1 0 0 0 0 0 0 0 0 0]  ))
-%!  assert(all(filter(b.', a,   x  ) == [1 0 0 0 0 0 0 0 0 0]  ))
-%!  assert(all(filter(b,   a,   x.') == [1 0 0 0 0 0 0 0 0 0].'))
-%!  assert(all(filter(b.', a,   x.') == [1 0 0 0 0 0 0 0 0 0].'))
-%!  assert(all(filter(b,   a.', x.') == [1 0 0 0 0 0 0 0 0 0].'))
-%!  assert(all(filter(b.', a,   x.') == [1 0 0 0 0 0 0 0 0 0].'))
+%!  x = zeros (1,10); x(1) = 1;
+%!  assert(filter(b,   [1], x  ), [1 1 0 0 0 0 0 0 0 0]);
+%!  assert(filter(b,   [1], x.'), [1 1 0 0 0 0 0 0 0 0].');
+%!  assert(filter(b.', [1], x  ), [1 1 0 0 0 0 0 0 0 0]  );
+%!  assert(filter(b.', [1], x.'), [1 1 0 0 0 0 0 0 0 0].');
+%!  assert(filter([1], a,   x  ), [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1]  );
+%!  assert(filter([1], a,   x.'), [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1].');
+%!  assert(filter([1], a.', x  ), [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1]  );
+%!  assert(filter([1], a.', x.'), [+1 -1 +1 -1 +1 -1 +1 -1 +1 -1].');
+%!  assert(filter(b,   a,   x  ), [1 0 0 0 0 0 0 0 0 0]  );
+%!  assert(filter(b.', a,   x  ), [1 0 0 0 0 0 0 0 0 0]  );
+%!  assert(filter(b,   a.', x  ), [1 0 0 0 0 0 0 0 0 0]  );
+%!  assert(filter(b.', a,   x  ), [1 0 0 0 0 0 0 0 0 0]  );
+%!  assert(filter(b,   a,   x.'), [1 0 0 0 0 0 0 0 0 0].');
+%!  assert(filter(b.', a,   x.'), [1 0 0 0 0 0 0 0 0 0].');
+%!  assert(filter(b,   a.', x.'), [1 0 0 0 0 0 0 0 0 0].');
+%!  assert(filter(b.', a,   x.'), [1 0 0 0 0 0 0 0 0 0].');
 %!
 %!test
 %!  r = sqrt(1/2)*(1+i);
 %!  a = a*r;
 %!  b = b*r;
-%!  assert(all(filter(b, [1], x   ) == r*[1 1 0 0 0 0 0 0 0 0]   ))
-%!  assert(all(filter(b, [1], r*x ) == r*r*[1 1 0 0 0 0 0 0 0 0] ))
-%!  assert(all(filter(b, [1], x.' ) == r*[1 1 0 0 0 0 0 0 0 0].' ))
-%!  assert(all(filter(b, a,   x   ) ==   [1 0 0 0 0 0 0 0 0 0]   ))
-%!  assert(all(filter(b, a,   r*x ) == r*[1 0 0 0 0 0 0 0 0 0]   ))
+%!  assert(filter(b, [1], x   ), r*[1 1 0 0 0 0 0 0 0 0]   );
+%!  assert(filter(b, [1], r*x ), r*r*[1 1 0 0 0 0 0 0 0 0] );
+%!  assert(filter(b, [1], x.' ), r*[1 1 0 0 0 0 0 0 0 0].' );
+%!  assert(filter(b, a,   x   ),   [1 0 0 0 0 0 0 0 0 0]   );
+%!  assert(filter(b, a,   r*x ), r*[1 0 0 0 0 0 0 0 0 0]   );
 %!
 %!shared a, b, x, y, so
 %!test
-%!  a = [1,1]; b=[1,1];
-%!  x = zeros(1,10); x(1) = 1;
-%!  [y, so] = filter(b, [1], x, [-1]);
-%!  assert(all(y == [0 1 0 0 0 0 0 0 0 0]))
-%!  assert(so,0)
+%!  a = [1,1]; b = [1,1];
+%!  x = zeros (1,10); x(1) = 1;
+%!  [y, so] = filter (b, [1], x, [-1]);
+%!  assert(y, [0 1 0 0 0 0 0 0 0 0]);
+%!  assert(so,0);
 %!
 %!test
-%!  x  = zeros(10,3); x(1,1)=-1; x(1,2)=1;
-%!  y0 = zeros(10,3); y0(1:2,1)=-1; y0(1:2,2)=1;
-%!  y = filter(b,[1],x);
-%!  assert(all(all(y==y0)))
+%!  x  = zeros (10,3); x(1,1)=-1; x(1,2)=1;
+%!  y0 = zeros (10,3); y0(1:2,1)=-1; y0(1:2,2)=1;
+%!  y = filter (b, [1], x);
+%!  assert(y,y0);
 %!
 %!test
 %!  a = [1,1]; b=[1,1];
-%!  x = zeros(4,4,2); x(1,1:4,1) = +1; x(1,1:4,2) = -1;
-%!  y0 = zeros(4,4,2); y0(1:2,1:4,1) = +1; y0(1:2,1:4,2) = -1;
-%!  y = filter(b, [1], x);
-%!  assert(all(all(all(y==y0))))
+%!  x = zeros (4,4,2); x(1,1:4,1) = +1; x(1,1:4,2) = -1;
+%!  y0 = zeros (4,4,2); y0(1:2,1:4,1) = +1; y0(1:2,1:4,2) = -1;
+%!  y = filter (b, [1], x);
+%!  assert(y, y0);
 %!
-%!assert(filter(1,ones(10,1)/10,[]), [])
-%!assert(filter(1,ones(10,1)/10,zeros(0,10)), zeros(0,10))
-
+%!assert(filter (1, ones(10,1)/10, []), []);
+%!assert(filter (1, ones(10,1)/10, zeros(0,10)), zeros(0,10));
+%!assert(filter([1, 3], [1], [1 2; 3 4; 5 6], [4, 5]), [5 7; 6 10; 14 18]);
+%!assert(filter (1, ones(10,1)/10, single (1:5)), repmat (single (10), 1, 5));
 %%  Should put some tests of the "DIM" parameter in here.
 
 */