我正在尝试使用 diffset,设置稳定,但出现Unknown flag.
错误。我也试过了sorted
,但同样的错误适用。有不同的语法吗?
我的代码:
C = setdiff([4 1 3 2],[2 1],'sorted')
我正在使用 Matlab 7.10.0 r2010a
如前所述,这可能是 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
这篇文章提供了一个实现:
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