我有一个枚举某处定义:Matlab:在ismember中的错误?
classdef MyError
enumeration
Error0
Error1
Error2
end
end
然后,我想一个简单的调用不同版本的Matlab在ismember。
R2012a:
>> enums = enumeration('MyError');
>> ismember(MyError.Error0,enums)
ans =
1
R2013b:
>> enums = enumeration('MyError');
>> ismember(MyError.Error0,enums)
Undefined function 'sort' for input arguments of type 'MyError'.
Error in ismember>ismemberClassTypes (line 711)
sort(ab(1));
Error in ismember>ismemberR2012a (line 490)
lia = ismemberClassTypes(a,b);
Error in ismember (line 57)
[varargout{1:max(1,nargout)}] = ismemberR2012a(A,B);
我看代码发出的错误,我不明白什么是呼叫“排序”的目的,因为它的输入是一个标值,输出不存储。鉴于在枚举值上调用ismember是相当普遍的任务,我很惊讶地看到这样的回归。
任何解决办法的想法?
'sort'被简单地用作'ismember'背后的算法的一部分来加速事情。但是错误消息也表明,似乎有一些特殊的处理 - 考虑到有一个子功能称为“ismember2012a”。 – sebastian
“ismember”的行为发生了变化,如果您希望旧行为设置遗留标志,请执行以下操作:http://stackoverflow.com/questions/20397910/matlab-behavior-of-the-unique-function/20398118#20398118 – Daniel
AFAIK 'legacy'选项必须与LOCB输出参数或类组合的排序(请参阅内联帮助)。我没有这样做,所以即使解决方法适用于我的情况,Mathworks也引入了一个错误。 –