配列の各要素または他の配列の行または列を数える(及び位置を調べる)
[nb [,loc]] = members(N, H) [nb [,loc]] = members(N, H, "last") [nb [,loc]] = members(N, H, "rows"|"cols") [nb [,loc]] = members(N, H, "rows"|"cols", "last") [nb [,loc]] = members(N, H, "rows"|"cols", "shuffle") [nb [,loc]] = members(N, H, "rows"|"cols", "shuffle", "last")
Needles: 論理値, 整数エンコードされた数値, 実数または複素数の10進数, 多項式またはテキストの行列またはハイパー行列.
"rows"または"cols"モードでは,
ハイパー行列は指定できません.
指定した値(または行または列)はNの中に
複数回配置することができます.
Haystack:
Nと同じデータ型の行列またはハイパー行列.
"rows" または "cols" モードの場合, ハイパー行列は指定できません.
N および H
はそれぞれ同じ列または行の数を有する必要があります.
以下の1から3個のオプションを順を問わず指定可能です:
Nから
needlesのHの位置をlocで
検索した場合,
デフォルトでHの中でそれぞれが最初に現れる位置が返されます.
デフォルトで, Nの各要素N(i, j, ...)
は Hの中で検索する際のneedleとみなされます.
"rows" が検索された場合,
Nの各行はneedleとみなされ, 全体として,
Hの行で検索が行われます.
"cols" が使用された場合,
"cols"が
N 及び Hの列に適用されます.
"cols" を使用した場合,
N 及び H の列数と同じ部分に
適用されます.
"rows"または"cols" モードの場合,
行/列の要素のデフォルトの順序が考慮されます: 例えば,N
の [ 7 3 5 ] は,
Hの[3 5 7]にマッチしません.
"shuffle" が指定された場合,
例えば[3 5 7]の交換は
Nの[3 5 7]行に一致すると
みなされます.
このオプションは多項式の場合,無視されます.
通常モードの場合: nb(i, j, ...) は(実数として)
HにおけるN(i, j, ...)の出現回数
を表します.
nb および N は同じ形式です.
H が空の場合, ゼロ行列が返されます.
N が空の場合, 空の行列 [] が返されます.
"rows" または "cols" モードの場合:
nb は N が有する行/列と同じ数の要素を
有する実数の行です.
nb(i) は,H(., :) の中で
N(i, :) が生じた数
(またはH(:, .)の中でN(:, i))を返します.
通常のモードの場合:
loc およびN は同じ形式を有します.
loc(i, j, ...) は,
N(i, j, ...) がある場所として
Hに最小の線形化された添字を返します.
"last"フラグが使用された場合,
替りに最大の線形化された添字の最大値が返されます.
Hの中に N(i, j, ...)が見つかれない場合,
loc(i, j, ...) は 0に設定されます.
"rows" または "cols" モードの場合:
loc はNが有する行及び列と同じ
数の要素を有する実数の行です.
loc(i) は,
N(i, :)に一致する最初の
行H(loc(i), :)の添字
(または N(:, i)に一致する最初の列
H(:, loc(i)) の添字)を返します.
"shuffle"フラグが追加で指定された場合,
行/列に基づく要素の順番は考慮されません.
nb = members(N, H [,"rows"|"cols"])
は各要素またはHの中にある
Nの行または列の発生回数を返します.
要素が見つからない場合, 0 が返されます.
N(i,j,...)が現れる最初(デフォルト)または
"last"(最後)のHの添字を,
2番目のオプションの出力locにより取得できます.
"rows" または "cols"
の一致するものを探す場合,
オプション"shuffle"を使用することにより,
一致の際の要素の順番を無視することができます.
値 %inf および -%inf
をNの中およびHの中で
使用することができます.
ノーマルモードでは,
%nanがNの中では
サポートされますが,Hの中ではサポートされません.
"rows" または "cols" モードの場合,
%nan はどこでもサポートされます.
通常の要素毎のモードの場合, members(..) は, 論理値, 整数エンコードされた数値(8-16-32ビット長の符号ありまたは無し) および実数を高速に処理するために dsearch(..) を使用します. 計算時間が長い場合, 進行状況の棒グラフが表示されます.
N = [1 8 4 5 2 1]; H = [9 7 4 2 1 4]; [nb, loc] = members(N, H, "last") // nb = [1 0 2 0 1 1] を返す: 例えば, Hの中に4が2回現れる. // そして loc = [5 0 6 0 4 5]: 4が最後に現れるのはHの6番目の位置 [nb, loc] = members(N, H) // loc = [5 0 3 0 4 5]を返す: 4が最初に現れるのはHの3番目の位置 // ハイパー行列の場合. 前記の N 及び Hを利用: N = matrix(N, [3 1 2]); H = matrix(H, [3 1 2]); [nb, loc] = members(N, H, "last") // 整数の場合: N = int8(grand(3, 2, "uin", -5, 5)); H = int8(grand(4, 4, "uin", -5, 5)); [nb, loc] = members(N, H) // 多項式の場合 (複素数の係数を指定可能): z = %z; N = [z (1-z)^2 ; -4 %i*z ]; H = [2 %i*z -z 3-z z z^3 z]; [nb, loc] = members(N, H) // テキストの場合: N = [ "Hi" "Hu" "Allo"]; H = [ "Hello" "Bonjour" "Allo" "Holà" "Allo" "Hallo" "Hi" "Hé" "Salud" ]; [nb, loc] = members(N, H, "last") // 行の場合: H = [ 3 3 0 4 1 0 2 0 3 0 1 4 3 4 3 0 4 1 3 1 0 ]; N = [ 1 2 3 0 1 4 3 0 3 4 1 0 2 0 2 ]; N, H [nb, loc] = members(N, H, "rows") [nb, loc] = members(N, H, "rows","last") [nb, loc] = members(N, H, "rows","shuffle") // [4 1 0], [0 1 4] 及び [0 4 1] は同一とみなされる // 列の場合: 定義済みの N 及び H を利用: N = N.', H = H.' [nb, loc] = members(N, H, "cols", "shuffle") | ![]() | ![]() |
| Version | Description |
| 5.5.0 | members() 関数が導入されました. |