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 に答える