# HG changeset patch # User Daniel J Sebald # Date 1232090019 -3600 # Node ID e09ae0f2c767fa062efb54b21235b6f70923504f # Parent bacb8412989643828b3c579fc7a9bd934a323e7f make unique work for row vectors diff -r bacb84129896 -r e09ae0f2c767 scripts/ChangeLog --- a/scripts/ChangeLog Fri Jan 16 08:13:15 2009 +0100 +++ b/scripts/ChangeLog Fri Jan 16 08:13:39 2009 +0100 @@ -1,3 +1,7 @@ +2009-01-13 Daniel J Sebald + + * set/unique.m: Fix for vertical array inputs. + 2008-12-18 Daniel J Sebald * set/unique.m: Only check for options if nargin > 1. diff -r bacb84129896 -r e09ae0f2c767 scripts/set/unique.m --- a/scripts/set/unique.m Fri Jan 16 08:13:15 2009 +0100 +++ b/scripts/set/unique.m Fri Jan 16 08:13:39 2009 +0100 @@ -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)