Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.5.1 - 日本語

Change language to:
English - Français - Português - Русский

Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function

Scilabヘルプ >> Elementary Functions > setoperations > members

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" モードの場合: nbN が有する行/列と同じ数の要素を 有する実数の行です. 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" モードの場合: locNが有する行及び列と同じ 数の要素を有する実数の行です. 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 および -%infNの中およびHの中で 使用することができます. ノーマルモードでは, %nanNの中では サポートされますが,Hの中ではサポートされません. "rows" または "cols" モードの場合, %nan はどこでもサポートされます.

通常の要素毎のモードの場合, members(..) は, 論理値, 整数エンコードされた数値(8-16-32ビット長の符号ありまたは無し) および実数を高速に処理するために dsearch(..) を使用します. 複素数, テキスト, 多項式の場合, より低速でよりメモリ消費が多いアルゴリズムが使用されます. これらのデータ型についてより高い性能を得たい場合, より大きなNまたはHの場合, ユーザは stacksize(..)を増加させることになります. 計算時間が長い場合, 進行状況の棒グラフが表示されます.

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"    ""    "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 — 2つのベクトルで共通の値のベクトルを返す
  • find — 論理値ベクトルまたは行列のtrue要素の添え字を見つける
  • vectorfind — ベクトルに一致する行列の行または列を見つける

履歴

バージョン記述
5.5.0 members() 関数が導入されました.
Report an issue
<< intersect setoperations setdiff >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Thu Oct 02 13:58:21 CEST 2014