0

我正在尝试使用 diffset,设置稳定,但出现Unknown flag.错误。我也试过了sorted,但同样的错误适用。有不同的语法吗?

我的代码:

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

我正在使用 Matlab 7.10.0 r2010a

4

2 回答 2

2

如前所述,这可能是 MATLAB 版本问题。的行为setdiff在上一个版本中发生了变化,并且在线文档仅涵盖了 MATLAB 的最新 2013a 版本,因此这可能是您感到困惑的一个原因。

也就是说,以前的 MATLAB 版本的文档也可以在线获得(但请注意,它需要一个 MathWorks 帐户)。无论如何,您的 MATLAB 似乎具有较旧的setdiff命令实现,您可以通过以下方式验证:

help setdiff

无论如何,当标志setOrder设置为时,旧实现setdiff的行为类似于新实现的行为。如果您想模仿标志setOrder设置为时的行为,则可以改用,例如:'sorted''stable'ismember

A = [4 1 3 2];
B = [2 1];
C = A(~ismember(A, B))

产生:

C =
     4     3
于 2013-03-11T21:54:39.043 回答
0

这篇文章提供了一个实现:

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
于 2013-12-24T00:43:14.757 回答