Loc()、Loc Nonmissing()、Loc Min()、Loc Max()、およびLoc Sorted()関数はすべて、行列内の特定の値の位置を示す行列を戻します。
Loc()関数は、行列Aにおいて要素が「真」となっている位置を示す行列を作成します。つまり、行列Aにおいて、「0以外かつ欠測値以外」である要素の位置を示す行列を作成します。
A = [0 1 . 3 4 0];
B = [2 0 0 2 5 6];
次の例は、Aにおいて、0以外かつ欠測値以外である要素のインデックスを戻します。
I = Loc( A );
[2, 4, 5]
次の例は、Bの対応する要素よりも小さいAの要素のインデックスを戻します。2つの行列の行と列は同数でなければならないことに注意してください。
I = Loc( A < B );
[1, 5, 6]
次のスクリプトは、Aの4より小さい要素をすべて0に置き換えます。
A = [0 1 0 3 4 0];
A[Loc( A < 4 )] = 0;
Show( A );
A = [0 0 0 0 4 0];
次のスクリプトは空の行列を戻します。
Loc( [2 3 4 5 6] > 7 );
[](0, 1)
Loc Nonmissing()関数は、欠測値を含まない行列の行番号のベクトルを戻します。たとえば、
A = [1 2 3, 4 . 6, 7 8 ., 8 7 6];
Loc Nonmissing( A );
[1, 4]
Loc Min()関数とLoc Max()関数は、それぞれ行列の最初の最小要素および最大要素の位置を戻します。行列の要素には、先頭行の最初の列から始め、左から右に向かって連続して番号が付けられます。
A = [1 2 2, 2 4 4, 1 1 1];
B = [6, 12, 9];
Show( Loc Max( A ) );
Show( Loc Min( B ) );
Loc Max(A) = 5;
Loc Min(B) = 1;
Loc Sorted()関数は、主に、ある数値がどのくらいの位置にあるかを調べるために使用します。この関数は、行列Bで与えられた値以下である値の中で最大のものが、Aのどの位置にあるのかを戻します。結果のベクトルには、Bの各要素に対応する項目が含まれます。
A = [10 20 30 40];
B = [35];
Loc Sorted( A, B );
[3]
A = [10 20 40];
B = [35 5 45 20];
Loc Sorted( A, B );
[2, 1, 3, 2]
次は文字列のリストを定義する例です。Loc Sorted()は7がリストのどの位置に入るかを判断します。
{"No Fat", "Some Fat", "Low Fat", "Normal Fat", "Medium Fat", "High Fat"}
[Loc Sorted( [0, 1, 5, 10, 20, 25], 7)]
{"Low Fat"}
戻り値を文字列として取り出すには、添え字[1]を式の末尾に指定します。:
{"No Fat", "Some Fat", "Low Fat", "Normal Fat", "Medium Fat", "High Fat"}
[Loc Sorted( [0, 1, 5, 10, 20, 25], 7)][1]
"Low Fat"
メモ:
• Aは昇順に並んでいる必要があります。
• 戻り値は必ず1以上の整数です。Bの要素がAのどの要素よりも小さい場合、関数は1の値を戻します。Bの要素がAのどの要素よりも大きい場合、関数はnを戻します。nはAの要素の数です。