我有一個枚舉某處定義: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也引入了一個錯誤。 –