27 Sets

Last-modified: 2025-03-08 (土) 14:42:39

27 セット

Octave には、データ セットを管理するための関数が多数あります。セットは一意の要素の集合として定義され、通常は昇順に並べられた数値のベクトルで表されます。unique関数を使用して重複を削除することで、任意のベクトルまたは行列をセットに変換できます。ただし、セットを操作するすべての関数は、処理を進める前に入力をセットに変換するため、セットを明示的に作成する必要はありません。

: y = unique (x)
: y = unique (x, "rows")
: y = unique (…, "sorted")
: y = unique (…, "stable")
: [y, i, j] = unique (…)
: [y, i, j] = unique (…, "first")
: [y, i, j] = unique (…, "last")
: [y, i, j] = unique (…, "legacy")
xの一意の要素を返します。

入力xが列ベクトルの場合は列ベクトルを返します。それ以外の場合は行ベクトルを返します。x は文字列のセル配列の場合もあります。

オプションの引数が指定されている場合は、 x"rows"の一意の行を返します。このオプションを使用するには、入力は 2 次元の数値行列である必要があります。

オプションの引数"sorted"/ は、"stable"出力に表示される一意の値の順序を制御します。デフォルトは で "sorted"、出力の値は昇順に配置されます。代わりに、入力x"stable"で見つかった順序が保持されます 。

要求された場合、および となる列インデックス ベクトルiとjを返します。 y = x(i)x = y(j)

さらに、i が要求された出力である場合、フラグ "first"またはのいずれか"last"を指定できます。 が指定されている場合は、 i"last"で可能な最大のインデックスを返し、 が指定されている場合は、 最小のインデックスを返します。デフォルトは です 。 "first""first"

例1: 並べ替え順序

unique ([3, 1, 1, 2])
⇒ [1, 2, 3]
unique ([3, 1, 1, 2], "stable")
⇒ [3, 1, 2]

例2: インデックスの選択

[~, i] = unique ([3, 1, 1, 2], "first")
⇒ i = [2; 4; 1]
[~, i] = unique ([3, 1, 1, 2], "last")
⇒ i = [3; 4; 1]

プログラミング ノート: 入力フラグは、"legacy"アルゴリズムを変更して、 R2012b より前のMATLABリリースと互換性を持たせます。具体的には、インデックス順序付けフラグが に変更され"last"、出力i、jの形状は常に列ベクトルになるのではなく、 入力xの形状に従います。

ソート順序が の場合、3 番目の出力j"stable"はまだ実装されていません。

See also: uniquetol, union, intersect, setdiff, setxor, ismember.

: c = uniquetol (A)
: c = uniquetol (A, tol)
: c = uniquetol (…, property, value)
: [c, ia, ic] = uniquetol (…)
許容値tol以内のAの一意の要素を返します。

2 つの値xとyは、次の場合に相対許容範囲内にあります 。 abs (x - y) <= tol * max (abs (A(:)))

入力A は実数 (非複素数) の浮動小数点型 (倍精度または単精度) である必要があります。

tolが指定されていない場合、デフォルトの許容値は倍精度入力の場合は 1e-12、単精度入力の場合は 1e-6 になります。

この関数は、次のオプションのプロパティ/値のペアを使用して呼び出すこともできます。プロパティ/値のペアは、他の入力引数の後に渡す必要があります。

"ByRows"(デフォルト:false)
true の場合、 Aの一意の行を返します。 このオプションを使用するには、 A は2 次元配列である必要があります。行の場合、一意性の基準は、 行の各列コンポーネントを列固有の許容値と比較するように変更されます。 all (abs (x - y) <= tol*max (abs (A),[],1))

"DataScale"
許容差テストは に変更されます 。ここで、 DS は、 プロパティが true でない限りスカラーです。その場合、DS はスカラーか、 A の列数に等しい長さのベクトルのいずれかになります。 DSにの値を使用すると、許容差が相対許容差から絶対許容差に変更されます。 の値を使用すると、テストが無効になります。 abs (x - y) <= tol*DS"ByRows"1.0Inf

"OutputAllIndices"(デフォルト:false)
true の場合、ia は、 Cの値の許容範囲内にある Aのすべての要素のインデックスを含むセル配列 (ベクトルではありません) です。つまり、iaの各セルはCの単一の一意の値に対応し、各セルの値は Aの場所に対応します。

入力Aが行ベクトルの場合、出力cは行ベクトルになります。それ以外の場合は、列ベクトルが返されます。

オプションの出力ia は、 となる列インデックス ベクトルです 。プロパティが true の場合、条件は です。 プロパティが true の場合、値は すべて一意の値 の許容範囲内にあります。 c = A(ia)"ByRows"c = A(ia, :)"OutputAllIndices"A(ia{i})c(i)

オプションの出力icは、 Aがベクトルの場合の列インデックス ベクトルです 。Aが 行列の場合、です。 プロパティが true の場合、 です。 A = c(ic)A(:) = c(ic)"ByRows"A = c(ic,:)

例: 小さな丸め誤差には が必要でuniquetolあり、unique

x = [1:5];
## Inverse_Function (Function (x)) should return exactly x
y = exp (log (x));
D = unique ([x, y])
⇒ [1   2   3   3   4   5   5]
C = uniquetol ([x, y])
⇒ [1   2   3   4   5]

See also: unique, union, intersect, setdiff, setxor, ismember.

Set Operations