# HG changeset patch # User Rik # Date 1287633684 25200 # Node ID e79f59d31a74513c993ac905d25c01b2946540ba # Parent fbec4b3be59f6064e5a89934c1d6fee23ec53d0a Add tests for fftconv.m diff -r fbec4b3be59f -r e79f59d31a74 scripts/ChangeLog --- a/scripts/ChangeLog Wed Oct 20 22:15:34 2010 -0400 +++ b/scripts/ChangeLog Wed Oct 20 21:01:24 2010 -0700 @@ -1,3 +1,8 @@ +2010-10-20 Rik + + * polynomial/conv.m: Remove redundant test. + * signal/fftconv.m: Add tests used by conv.m code. + 2010-10-20 Olaf Till * optimization/optimset.m: Use cell2struct instead of struct to diff -r fbec4b3be59f -r e79f59d31a74 scripts/polynomial/conv.m --- a/scripts/polynomial/conv.m Wed Oct 20 22:15:34 2010 -0400 +++ b/scripts/polynomial/conv.m Wed Oct 20 21:01:24 2010 -0700 @@ -110,13 +110,6 @@ %! assert (conv (y, c), [3, 3, 3]); %! assert (conv (b, c), 6); - -%!test -%! a = 1:10; -%! b = 1:3; -%! assert (size(conv(a,b)), [1, numel(a)+numel(b)-1]) -%! assert (size(conv(b,a)), [1, numel(a)+numel(b)-1]) - %!test %! a = 1:10; %! b = 1:3; @@ -130,6 +123,12 @@ %!test %! a = 1:10; +%! b = (1:3).'; +%! assert (size(conv(a,b)), [1, numel(a)+numel(b)-1]) +%! assert (size(conv(b,a)), [1, numel(a)+numel(b)-1]) + +%!test +%! a = 1:10; %! b = 1:3; %! assert (conv(a,b,"full"), conv(a,b)) %! assert (conv(b,a,"full"), conv(b,a)) @@ -140,14 +139,9 @@ %! assert (conv(a,b,'same'), [4, 10, 16, 22, 28, 34, 40, 46, 52, 47]) %! assert (conv(b,a,'same'), [28, 34, 40]) -%!test -%! a = 1:10; -%! b = (1:3).'; -%! assert (size(conv(a,b)), [1, numel(a)+numel(b)-1]) -%! assert (size(conv(b,a)), [1, numel(a)+numel(b)-1]) - %% Test input validation %!error conv (1); %!error conv (1,2,3,4); %!error conv ([1, 2; 3, 4], 3); %!error conv (2, []); + diff -r fbec4b3be59f -r e79f59d31a74 scripts/signal/fftconv.m --- a/scripts/signal/fftconv.m Wed Oct 20 22:15:34 2010 -0400 +++ b/scripts/signal/fftconv.m Wed Oct 20 21:01:24 2010 -0700 @@ -56,7 +56,7 @@ if (nargin == 2) c = fftfilt (a, b); else - if (! (isscalar (N))) + if (! isscalar (N)) error ("fftconv: N must be a scalar"); endif c = fftfilt (a, b, N); @@ -66,3 +66,41 @@ endfunction %% FIXME: Borrow tests from conv.m. May need a tolerance on the assert comparison +%!test +%! x = ones(3,1); +%! y = ones(1,3); +%! b = 2; +%! c = 3; +%! assert (fftconv (x, x), [1; 2; 3; 2; 1], 5*eps); +%! assert (fftconv (y, y), [1, 2, 3, 2, 1], 5*eps); +%! assert (fftconv (x, y), [1, 2, 3, 2, 1], 5*eps); +%! assert (fftconv (y, x), [1; 2; 3; 2; 1], 5*eps); +%! assert (fftconv (c, x), [3; 3; 3], 5*eps); +%! assert (fftconv (c, y), [3, 3, 3], 5*eps); +%! assert (fftconv (x, c), [3; 3; 3], 5*eps); +%! assert (fftconv (y, c), [3, 3, 3], 5*eps); +%! assert (fftconv (b, c), 6, 5*eps); + +%!test +%! a = 1:10; +%! b = 1:3; +%! assert (size(conv(a,b)), [1, numel(a)+numel(b)-1]) +%! assert (size(conv(b,a)), [1, numel(a)+numel(b)-1]) + +%! a = (1:10).'; +%! b = 1:3; +%! assert (size(conv(a,b)), [numel(a)+numel(b)-1, 1]) +%! assert (size(conv(b,a)), [numel(a)+numel(b)-1, 1]) + +%!test +%! a = 1:10; +%! b = (1:3).'; +%! assert (size(conv(a,b)), [1, numel(a)+numel(b)-1]) +%! assert (size(conv(b,a)), [1, numel(a)+numel(b)-1]) + +%% Test input validation +%!error fftconv (1); +%!error fftconv (1,2,3,4); +%!error fftconv ([1, 2; 3, 4], 3); +%!error fftconv (2, []); +%!error fftconv ([1,1], [2,2] , [3, 4]);