配列の各要素または他の配列の行または列を数える(及び位置を調べる)
[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() 関数が導入されました. |