Matlab:唯一函数的行为
我目前正在将代码从R2012a迁移到R2013b 我注意到Matlab:唯一函数的行为,matlab,Matlab,我目前正在将代码从R2012a迁移到R2013b 我注意到独特的函数行为发生了变化: R2012a >> size(unique([])) ans = 0 0 R2013b >> size(unique([])) ans = 0 1 在我看来,0x0矩阵在删除doublons后会变成0x1矩阵,这似乎与直觉相反,这本质上就是unique函数所做的。有人对此有什么理由吗?如果您需要旧的行为使用,R2013a的行为已经改变: s
独特的
函数行为发生了变化:
R2012a
>> size(unique([]))
ans =
0 0
R2013b
>> size(unique([]))
ans =
0 1
在我看来,0x0矩阵在删除doublons后会变成0x1矩阵,这似乎与直觉相反,这本质上就是unique函数所做的。有人对此有什么理由吗?如果您需要旧的行为使用,R2013a的行为已经改变:
size(唯一([],'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,这可能会让人困惑。这可能是相关的:这里是,展开所有2013a并搜索
unique
@DennisJaheruddin我查看了发行说明,找不到相关内容。我瞎了吗?好吧,在“数学”下找到的。有道理。