Mercurial > octave-nkf
changeset 11864:9780ca97156e release-3-0-x
conv.m: Correct row/col orientation of output
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Fri, 03 Oct 2008 14:55:13 +0200 |
parents | ad3b944fde43 |
children | 78cf5edb69ce |
files | scripts/ChangeLog scripts/polynomial/conv.m |
diffstat | 2 files changed, 47 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/scripts/ChangeLog Fri Oct 03 14:36:56 2008 +0200 +++ b/scripts/ChangeLog Fri Oct 03 14:55:13 2008 +0200 @@ -1,3 +1,7 @@ +2008-09-29 Ben Abbott <bpabbott@mac.com> + + * polynomial/conv.m: Correct row/col orientation of output. + 2008-09-24 John W. Eaton <jwe@octave.org> * plot/fplot.m: Call axis after calling plot.
--- a/scripts/polynomial/conv.m Fri Oct 03 14:36:56 2008 +0200 +++ b/scripts/polynomial/conv.m Fri Oct 03 14:55:13 2008 +0200 @@ -47,29 +47,62 @@ ly = la + lb - 1; - ## Ensure that both vectors are row vectors. - if (rows (a) > 1) - a = reshape (a, 1, la); - endif - if (rows (b) > 1) - b = reshape (b, 1, lb); - endif - ## Use the shortest vector as the coefficent vector to filter. + ## Preserve the row/column orientation of the longer input. if (la < lb) if (ly > lb) - x = [b, (zeros (1, ly - lb))]; + if (size (b, 1) <= size (b, 2)) + x = [b, (zeros (1, ly - lb))]; + else + x = [b; (zeros (ly - lb, 1))]; + endif else x = b; endif y = filter (a, 1, x); else if(ly > la) - x = [a, (zeros (1, ly - la))]; + if (size (a, 1) <= size (a, 2)) + x = [a, (zeros (1, ly - la))]; + else + x = [a; (zeros (ly - la, 1))]; + endif else x = a; endif y = filter (b, 1, x); endif +%!test +%! a = 1:10; +%! b = 1:3; +%! c = conv (a, b); +%! assert (size(c), [1, numel(a)+numel(b)-1]) +%!test +%! a = (1:10).'; +%! b = 1:3; +%! c = conv (a, b); +%! assert (size(c), [numel(a)+numel(b)-1, 1]) +%!test +%! a = 1:10; +%! b = (1:3).'; +%! c = conv (a, b); +%! assert (size(c), [1, numel(a)+numel(b)-1]) + +%!test +%! b = 1:10; +%! a = 1:3; +%! c = conv (a, b); +%! assert (size(c), [1, numel(a)+numel(b)-1]) +%!test +%! b = (1:10).'; +%! a = 1:3; +%! c = conv (a, b); +%! assert (size(c), [numel(a)+numel(b)-1, 1]) +%!test +%! b = 1:10; +%! a = (1:3).'; +%! c = conv (a, b); +%! assert (size(c), [1, numel(a)+numel(b)-1]) + endfunction