# HG changeset patch # User Jordi GutiƩrrez Hermoso # Date 1307381895 18000 # Node ID 7c8b50cd4fb40e26bc7e741cb3998361b035cf7b # Parent d326be468b13878b8c17f11365538d8a80e9abc8 Backout 12700:9843b3b055e0 from stable branch diff -r d326be468b13 -r 7c8b50cd4fb4 src/DLD-FUNCTIONS/filter.cc --- a/src/DLD-FUNCTIONS/filter.cc Sat Jun 04 16:03:21 2011 -0700 +++ b/src/DLD-FUNCTIONS/filter.cc Mon Jun 06 12:38:15 2011 -0500 @@ -456,10 +456,19 @@ } else { + dim_vector si_dims = args (3).dims (); + bool si_is_vector = true; + for (int i = 0; i < si_dims.length (); i++) + if (si_dims(i) != 1 && si_dims(i) < si_dims.numel ()) + { + si_is_vector = false; + break; + } + si = args(3).float_complex_array_value (); - if (si.is_vector () && x.is_vector ()) - si = si.reshape (dim_vector (si.numel (), 1)); + if (si_is_vector) + si = si.reshape (dim_vector (1, si.numel ())); } if (! error_state) @@ -504,10 +513,19 @@ } else { + dim_vector si_dims = args (3).dims (); + bool si_is_vector = true; + for (int i = 0; i < si_dims.length (); i++) + if (si_dims(i) != 1 && si_dims(i) < si_dims.numel ()) + { + si_is_vector = false; + break; + } + si = args(3).complex_array_value (); - if (si.is_vector () && x.is_vector ()) - si = si.reshape (dim_vector (si.numel (), 1)); + if (si_is_vector) + si = si.reshape (dim_vector (1, si.numel ())); } if (! error_state) @@ -555,10 +573,19 @@ } else { + dim_vector si_dims = args (3).dims (); + bool si_is_vector = true; + for (int i = 0; i < si_dims.length (); i++) + if (si_dims(i) != 1 && si_dims(i) < si_dims.numel ()) + { + si_is_vector = false; + break; + } + si = args(3).float_array_value (); - if (si.is_vector () && x.is_vector ()) - si = si.reshape (dim_vector (si.numel (), 1)); + if (si_is_vector) + si = si.reshape (dim_vector (1, si.numel ())); } if (! error_state) @@ -603,10 +630,19 @@ } else { + dim_vector si_dims = args (3).dims (); + bool si_is_vector = true; + for (int i = 0; i < si_dims.length (); i++) + if (si_dims(i) != 1 && si_dims(i) < si_dims.numel ()) + { + si_is_vector = false; + break; + } + si = args(3).array_value (); - if (si.is_vector () && x.is_vector ()) - si = si.reshape (dim_vector (si.numel (), 1)); + if (si_is_vector) + si = si.reshape (dim_vector (1, si.numel ())); } if (! error_state) @@ -713,13 +749,8 @@ %! %!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)); -%% Test using initial conditions -%!assert(filter([1, 1, 1], [1, 1], [1 2], [1, 1]), [2 2]); -%!assert(filter([1, 1, 1], [1, 1], [1 2], [1, 1]'), [2 2]); -%!assert(filter([1, 3], [1], [1 2; 3 4; 5 6], [4, 5]), [5 7; 6 10; 14 18]); -%!error (filter([1, 3], [1], [1 2; 3 4; 5 6], [4, 5]')); -%!assert(filter([1, 3, 2], [1], [1 2; 3 4; 5 6], [1 0 0; 1 0 0], 2), [2 6; 3 13; 5 21]); %% Should put some tests of the "DIM" parameter in here. */