Does the "unique" function work with 64 bit integers?

I was trying to sort a set of 64 bit integers using the "unique" function. This function seems to convert them to a 64 bit integer before sorting, though.
Example:
x=uint64(2^63)+uint64(0:1024)';
y=unique(x);
The output, y, is a single number, 9223372036854775808, rather than a column of 1025 integers, since the last 11 bits are rounded off.
The "sort" sorts the data properly, but does not remove duplicates. Are there any other solutions? I am using Matlab R2012a.

 Risposta accettata

Maybe use something similar to this as a workaround:
y = x(logical([1;diff(sort(x))]));

1 Commento

Yes. That works. The hard part was figuring out why my output did not match my input. I see in the UNIQUE function code where it changes the input to double precision. There is a comment in the code that "UNIQUE calls DIFF, which requires double input." This has not been true since R2010b, when the DIFF function began to work with integers. Thanks.

Accedi per commentare.

Più risposte (0)

Categorie

Richiesto:

Ken
il 24 Ago 2016

Commentato:

Ken
il 24 Ago 2016

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by