[英]Matlab: Behavior of the unique function
我目前正在将代码从R2012a迁移到R2013b。
我注意到unique
功能行为已经改变:
R2012a
>> size(unique([]))
ans =
0 0
R2013b
>> size(unique([]))
ans =
0 1
对我来说,在删除双重后,0x0矩阵将成为0x1矩阵似乎是违反直觉的,这实际上是唯一函数的作用。 有没有人有理由这样做?
如果您需要使用旧行为,则R2013a的行为已更改:
size(unique([],'legacy'))
如果您需要两个版本的代码,我建议编写一些函数,为新版本调用unique(x,'legacy')
,为旧版本调用unique(x)
。
顺便说一句:与union
, intersect
, setdiff
, setxor
和ismember
相同的问题
我不知道这是否是原因,但它确实带来了优势。
现在您将看到unique(M)
提供与unique(M(:))
相同的输出,即使M
为空。
例:
M = magic(5);
isequal(size(unique(M)), size(unique(M(:))));
M = [];
isequal(size(unique(M)), size(unique(M(:))));
后者在旧版本的matlab上返回false,这可能会令人困惑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.