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.

1 件のコメント

James Tursa
James Tursa 2016 年 8 月 24 日
In R2015a, y is a column of 1025 integers.

サインインしてコメントする。

 採用された回答

James Tursa
James Tursa 2016 年 8 月 24 日

0 投票

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

1 件のコメント

Ken
Ken 2016 年 8 月 24 日
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 ExchangeShifting and Sorting Matrices についてさらに検索

タグ

質問済み:

Ken
2016 年 8 月 24 日

コメント済み:

Ken
2016 年 8 月 24 日

Community Treasure Hunt

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

Start Hunting!

Translated by