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.

 Akzeptierte Antwort

James Tursa
James Tursa am 24 Aug. 2016
Maybe use something similar to this as a workaround:
y = x(logical([1;diff(sort(x))]));

1 Kommentar

Ken
Ken am 24 Aug. 2016
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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Gefragt:

Ken
am 24 Aug. 2016

Kommentiert:

Ken
am 24 Aug. 2016

Community Treasure Hunt

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

Start Hunting!

Translated by