members
配列の各要素または他の配列の行または列を数える(及び位置を調べる)
呼び出し手順
[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")
引数
- N
Needles: 論理値, 整数エンコードされた数値, 実数または複素数の10進数, 多項式またはテキストの行列またはハイパー行列. "rows"または"cols"モードでは, ハイパー行列は指定できません. 指定した値(または行または列)は
Nの中に 複数回配置することができます.- H
Haystack:
Nと同じデータ型の行列またはハイパー行列. "rows" または "cols" モードの場合, ハイパー行列は指定できません.NおよびHはそれぞれ同じ列または行の数を有する必要があります.- オプション:
以下の1から3個のオプションを順を問わず指定可能です:
- "last"
Nから needlesのHの位置をlocで 検索した場合, デフォルトでHの中でそれぞれが最初に現れる位置が返されます.- "rows", "cols"
デフォルトで,
Nの各要素N(i, j, ...)はHの中で検索する際のneedleとみなされます."rows"が検索された場合,Nの各行はneedleとみなされ, 全体として,Hの行で検索が行われます."cols"が使用された場合,"cols"がN及びHの列に適用されます."cols"を使用した場合,N及びHの列数と同じ部分に 適用されます.- "shuffle"
"rows"または"cols"モードの場合, 行/列の要素のデフォルトの順序が考慮されます: 例えば,Nの[ 7 3 5 ]は,Hの[3 5 7]にマッチしません."shuffle"が指定された場合, 例えば[3 5 7]の交換はNの[3 5 7]行に一致すると みなされます. このオプションは多項式の場合,無視されます.
- nb
通常モードの場合:
nb(i, j, ...)は(実数として)HにおけるN(i, j, ...)の出現回数 を表します.nbおよびNは同じ形式です.Hが空の場合, ゼロ行列が返されます.Nが空の場合, 空の行列[]が返されます."rows"または"cols"モードの場合:nbはNが有する行/列と同じ数の要素を 有する実数の行です.nb(i)は,H(., :)の中でN(i, :)が生じた数 (またはH(:, .)の中でN(:, i))を返します.- loc
通常のモードの場合:
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")
参照
- dsearch — 指定の分類で行列またはハイパー行列の要素を分配, 配置および数える
- intersect — elements or rows or columns met in both input arrays, without duplicates
- grep — 文字列のベクトルの中で指定した文字列に一致するかどうかを調べる
- find — 論理値ベクトルまたは行列のtrue要素の添え字を見つける
- vectorfind — locates occurences of a (wildcarded) vector in a matrix or hypermatrix
履歴
| バージョン | 記述 |
| 5.5.0 | members() 関数が導入されました. |
| Report an issue | ||
| << gsort | searchandsort | vectorfind >> |