# HG changeset patch # User Daniel J Sebald # Date 1231835683 -3600 # Node ID d437e8dc18fa52f1b0e23e4a1a0bceeacadd054c # Parent f729344c7362eb5b2b12973b544a4cb8889f3fa7 make unique work for row vectors diff --git a/scripts/ChangeLog b/scripts/ChangeLog --- a/scripts/ChangeLog +++ b/scripts/ChangeLog @@ -1,3 +1,7 @@ +2009-01-13 Daniel J Sebald + + * set/unique.m: Fix for vertical array inputs. + 2009-01-12 John W. Eaton * optimization/fzero.m, optimization/fsolve.m: Style fixes. diff --git a/scripts/set/unique.m b/scripts/set/unique.m --- a/scripts/set/unique.m +++ b/scripts/set/unique.m @@ -74,8 +74,10 @@ if (optrows) n = size (x, 1); + dim = 1; else n = numel (x); + dim = (size (x, 1) == 1) + 1; endif y = x; @@ -108,7 +110,11 @@ if (nargout >= 3) j = i; - j(i) = cumsum ([1, !match]); + if (dim == 1) + j(i) = cumsum ([1; !match]); + else + j(i) = cumsum ([1, !match]); + end endif if (optfirst) @@ -128,7 +134,7 @@ %!assert(unique([1;2]),[1;2]) %!assert(unique([1,NaN,Inf,NaN,Inf]),[1,Inf,NaN,NaN]) %!assert(unique({'Foo','Bar','Foo'}),{'Bar','Foo'}) -%!assert(unique({'Foo','Bar','FooBar'}),{'Bar','Foo','FooBar'}) +%!assert(unique({'Foo','Bar','FooBar'}'),{'Bar','Foo','FooBar'}') %!test %! [a,i,j] = unique([1,1,2,3,3,3,4]); @@ -137,7 +143,20 @@ %! assert(j,[1,1,2,3,3,3,4]) %! %!test -%! [a,i,j] = unique([1,1,2,3,3,3,4],'first'); -%! assert(a,[1,2,3,4]) -%! assert(i,[1,3,4,7]) -%! assert(j,[1,1,2,3,3,3,4]) +%! [a,i,j] = unique([1,1,2,3,3,3,4]','first'); +%! assert(a,[1,2,3,4]') +%! assert(i,[1,3,4,7]') +%! assert(j,[1,1,2,3,3,3,4]') +%! +%!test +%! [a,i,j] = unique({'z'; 'z'; 'z'}); +%! assert(a,{'z'}) +%! assert(i,[3]') +%! assert(j,[1,1,1]') +%! +%!test +%! A=[1,2,3;1,2,3]; +%! [a,i,j] = unique(A,'rows'); +%! assert(a,[1,2,3]) +%! assert(A(i,:),a) +%! assert(a(j,:),A)