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.

 采纳的回答

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

1 个评论

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.

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by