我正在尝试使用diffset,设置稳定,但我收到Unknown flag.
错误。我也尝试使用sorted
,但同样的错误适用。是否有不同的语法?
我的代码:
C = setdiff([4 1 3 2],[2 1],'sorted')
我正在使用Matlab 7.10.0 r2010a
答案 0 :(得分:2)
如前所述,这可能是MATLAB版本问题。 setdiff
的行为在最后一个版本中发生了变化,而online documentation仅涵盖了MATLAB最新的2013a版本,因此这可能是您混淆的可能原因。
也就是说,以前的MATLAB版本的文档是also available online(请注意,它需要一个MathWorks帐户)。在任何情况下,您的MATLAB似乎都有setdiff
命令的较早实现,您可以通过以下方式验证:
help setdiff
无论如何,当标志 setOrder 设置为setdiff
时,较早的'sorted'
实现的行为类似于较新实现的行为。如果您希望在标志 setOrder 设置为'stable'
时模仿行为,则可以改为使用ismember
,例如:
A = [4 1 3 2];
B = [2 1];
C = A(~ismember(A, B))
产生:
C =
4 3
答案 1 :(得分:0)
这个post提供了一个实现:
function [res]=setdiff_stable(a,b)
if(size(a,1)>size(a,2))
a=a';
end
if(size(b,1)>size(b,2))
b=b';
end
res=a(sum(repmat(a,length(b),1)-repmat(b',1,length(a))==0,1)==0);
end