未知标志错误diffset'stable'

时间:2013-03-11 21:03:09

标签: matlab set

我正在尝试使用diffset,设置稳定,但我收到Unknown flag.错误。我也尝试使用sorted,但同样的错误适用。是否有不同的语法?

我的代码:

C = setdiff([4 1 3 2],[2 1],'sorted')

我正在使用Matlab 7.10.0 r2010a

2 个答案:

答案 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