Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

islocalmin

局所的最小値の検出

説明

TF = islocalmin(A) は logical 配列を返します。この配列の要素は、A の対応する要素で局所的最小値が検出された場合に 1 (true) となります。

islocalmin の機能を対話的に使用するには、ライブ スクリプトに [局所的極値の検出] タスクを追加します。

TF = islocalmin(A,dim) は、演算の対象とする A の次元を指定します。たとえば、islocalmin(A,2) は行列 A の各行の局所的最小値を検出します。

TF = islocalmin(___,Name,Value) は、前述の構文の任意の入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用して局所的最小値を検出するためのパラメーターを指定します。たとえば、islocalmin(A,'SamplePoints',t) は時間ベクトル t に含まれるタイム スタンプを基準として A の局所的最小値を検出します。

[TF,P] = islocalmin(___) は、A の各要素に対応するプロミネンスも返します。

すべて折りたたむ

データのベクトルの局所的最小値を計算してプロットします。

x = 1:100;
A = (1-cos(2*pi*0.01*x)).*sin(2*pi*0.15*x);
TF = islocalmin(A);
plot(x,A,x(TF),A(TF),'r*')

データの行列を作成し、各行の局所的最小値を計算します。

A = -25*diag(ones(5,1)) + rand(5,5);
TF = islocalmin(A,2)
TF = 5x5 logical array

   0   0   0   1   0
   0   1   0   0   0
   0   0   1   0   0
   0   0   0   1   0
   0   0   1   0   0

データのベクトルの局所的最小値を、ベクトル t のタイム スタンプを基準に計算します。MinSeparation パラメーターを使用して、45 分以上間隔があいている最小値を計算します。

t = hours(linspace(0,3,15));
A = [2 4 6 4 3 7 5 6 5 10 4 -1 -3 -2 0];
TF = islocalmin(A,'MinSeparation',minutes(45),'SamplePoints',t);
plot(t,A,t(TF),A(TF),'r*')

連続する最小値を表すための方法を指定します。

連続する最小値を含むデータの局所的最小値を計算します。その値の最初の発生に基づいて、各フラット領域の最小値を表します。

x = 0:0.1:5;
A = max(-0.75, sin(pi*x));
TF1 = islocalmin(A,'FlatSelection','first');
plot(x,A,x(TF1),A(TF1),'r*')

その値のすべての発生を使用して、各フラット領域の最小値を表します。

TF2 = islocalmin(A,'FlatSelection','all');
plot(x,A,x(TF2),A(TF2),'r*')

データのベクトルの局所的最小値とプロミネンスを計算し、データを使用してプロットします。

x = 1:100;
A = peaks(100);
A = A(50,:);
[TF1,P] = islocalmin(A);
P(TF1)
ans = 1×2

    2.7585    1.7703

plot(x,A,x(TF1),A(TF1),'r*')
axis tight

最小プロミネンス要件を指定して、データ内で最も顕著な最小値を計算します。

TF2 = islocalmin(A,'MinProminence',2);
plot(x,A,x(TF2),A(TF2),'r*')
axis tight

入力引数

すべて折りたたむ

入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。

操作次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。

mn 列の入力行列 A を考えます。

  • islocalmin(A,1) は、A の各列のデータに従って局所的最小値を計算し、mn 列の行列を返します。

    islocalmin(A,1) column-wise operation

  • islocalmin(A,2) は、A の各行のデータに従って局所的最小値を計算し、mn 列の行列を返します。

    islocalmin(A,2) row-wise operation

入力データが table または timetable の場合、dim はサポートされず、演算は各 table 変数または timetable 変数に沿って個別に行われます。

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: TF = islocalmin(A,'MinProminence',2)

データ オプション

すべて折りたたむ

サンプル点。サンプル点のベクトル、または次の表のいずれかのオプション (入力データが table の場合) として指定します。サンプル点はデータの x 軸の位置を表し、並べ替える必要があり、一意の要素を含まなければなりません。サンプル点は等間隔でサンプリングされている必要はありません。既定の設定はベクトル [1 2 3 ...] です。

入力データが table の場合は、次のいずれかのオプションを使用して、サンプル点を table 変数として指定できます。

インデックス方式

変数名:

  • string スカラーまたは文字ベクトル

  • "A" または 'A'A という名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [false false true] — 3 番目の変数

関数ハンドル:

  • 入力として table 変数をとり、logical スカラーを返す関数ハンドル

  • @isnumeric — 数値を含んでいる 1 つの変数

変数の型:

  • 指定した型の 1 つの変数を選択する vartype 添字

  • vartype("numeric") — 数値を含んでいる 1 つの変数

メモ

入力データが timetable の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。

例: islocalmin(A,'SamplePoints',0:0.1:10)

例: islocalmin(T,'SamplePoints',"Var1")

演算の対象とする table 変数。DataVariables と次の表のいずれかのオプションで構成されるコンマ区切りのペアとして指定します。DataVariables の値は、入力 table 内の局所的最小値を調べる変数を示します。指摘された変数に関連付けられるデータ型は数値または logical でなければなりません。

最初の出力 TF には、DataVariables で指定されていない変数については false が格納されます。ただし、OutputFormat の値が 'tabular' の場合を除きます。

インデックス方式

変数名:

  • string または文字ベクトル

  • string 配列または文字ベクトルの cell 配列

  • pattern オブジェクト

  • "A" または 'A'A という名前の変数

  • ["A" "B"] または {'A','B'}A および B という名前の 2 つの変数

  • "Var"+digitsPattern(1)"Var" の後に数字 1 桁が続く名前の変数

変数インデックス:

  • table 内の変数の位置を参照するインデックス番号

  • 数値のベクトル

  • logical ベクトル。通常、このベクトルの長さは変数の数と同じですが、末尾の 0 値や false 値は省略できます。

  • 3 — table の 3 番目の変数

  • [2 3] — table の 2 番目と 3 番目の変数

  • [false false true] — 3 番目の変数

関数ハンドル:

  • 入力として table 変数をとり、logical スカラーを返す関数ハンドル

  • @isnumeric — 数値を含んでいるすべての変数

変数の型:

  • 指定した型の変数を選択する vartype 添字

  • vartype("numeric") — 数値を含んでいるすべての変数

例: islocalmin(T,'DataVariables',["Var1" "Var2" "Var4"])

出力データ型。次の値のいずれかとして指定します。

  • 'logical' — 入力データが table または timetable の場合、出力 TF を logical 配列として返します。

  • 'tabular' — 入力データが table の場合、出力 TF を table として返します。入力データが timetable の場合、出力 TF を timetable として返します。

入力データがベクトル、行列、または多次元配列の場合、OutputFormat はサポートされません。

例: islocalmin(T,'OutputFormat','tabular')

極値検出オプション

すべて折りたたむ

最小プロミネンス。非負のスカラーとして指定します。islocalmin は、プロミネンスが指定した値以上である局所的最小値のみを返します。

プロミネンス ウィンドウ。正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラー、または正の duration の 2 要素ベクトルとして指定します。この値は、各局所的最小値のプロミネンスの計算対象となる、隣接する点のウィンドウを定義します。

ウィンドウ値が正の整数スカラー k である場合、ウィンドウは各局所的最小値を中心として配置され、k-1 個の隣接する要素を含みます。k が偶数である場合、ウィンドウは現在の要素および直前の要素を中心にして配置されます。局所的最小値がフラット領域内にある場合、islocalmin はフラット領域全体をウィンドウの中心点として扱います。

値が正の整数の 2 要素ベクトル [b f] である場合、ウィンドウには局所的最小値、b 個前までの要素、f 個後までの要素が含まれます。局所的最小値がフラット領域内にある場合、ウィンドウはその領域の最初の点の b 個前にある要素から始まり、その領域の最後の点の f 個後にある要素で終わります。

入力データが timetable である場合、または SamplePointsdatetime または duration ベクトルとして指定されている場合、ウィンドウ値の型は duration でなければならず、ウィンドウはサンプル点を基準にして計算されます。

局所的最小値が連続して繰り返される場合のフラット領域インジケーター。次のいずれかの値として指定します。

  • 'center' — フラット領域の中心要素のみを局所的最小値として表します。フラットの中心に対応する TF の要素は 1 で、残りのフラット要素には 0 が対応します。

  • 'first' — フラット領域の最初の要素のみを局所的最小値として表します。フラットの開始に対応する TF の要素は 1 で、残りのフラット要素には 0 が対応します。

  • 'last' — フラット領域の最後の要素のみを局所的最小値として表します。フラットの終了に対応する TF の要素は 1 で、残りのフラット要素には 0 が対応します。

  • 'all' — フラット領域のすべての要素を局所的最小値として表します。フラットのすべての部分に対応する TF の要素が 1 となります。

名前と値の引数 MinSeparation または MaxNumExtrema を使用する場合、フラット領域の点はあわせて 1 つの最小点と見なされます。

局所的最小値の間の最小間隔。非負のスカラーとして指定します。この間隔の値は、サンプル点ベクトルと同じ単位で定義されます。既定では [1 2 3 ...] です。間隔の値が 0 より大きい場合、islocalmin は指定した間隔の中で最小の局所的最小値を選択し、他の局所的最小値はすべて無視します。この処理は、局所的最小値が他に検出されなくなるまで繰り返されます。

サンプル点ベクトルが datetime 型である場合、間隔の値は duration 型でなければなりません。

検出する最小値の最大数。正の整数スカラーとして指定します。islocalmin は最も顕著な最小値を指定した数以内で検出します。これは既定では操作次元の長さです。

出力引数

すべて折りたたむ

局所的最小値インジケーター。ベクトル、行列、多次元配列、table または timetable として返されます。

TF は、OutputFormat の値が 'tabular' の場合を除き、A と同じサイズになります。OutputFormat の値が 'tabular' の場合、TF は、指定された DataVariables に対応する変数のみをもちます。

データ型: logical

プロミネンス。ベクトル、行列、多次元配列、table または timetable として返されます。

  • P がベクトル、行列または多次元配列の場合、P のサイズは A と同じです。

  • P が table または timetable の場合、P の高さは A と同じで、指定した DataVariables に対応する変数のみをもちます。

入力データが符号付きまたは符号なし整数型の場合、P は符号なし整数です。

詳細

すべて折りたたむ

局所的最小値のプロミネンス

局所的最小値 (谷) のプロミネンスは、他の谷を基準とした相対的な深さと位置を基準にし、その谷がどの程度顕著であるかを測定するものです。

谷のプロミネンスを測定するには、最初に谷からの水平線を伸ばします。この線が左側および右側のデータと交差する場所を探します。その場所は別の谷かデータの最後のいずれかとなります。これらの場所を左側および右側の間隔の外側の端点としてマークします。次に、左側と右側の両方の間隔で最高のピークを検出します。これらの 2 つのピークのうち小さい方を使用して、そのピークから谷までの垂直距離を測定します。この距離がプロミネンスです。

ベクトル x の最大プロミネンスは、最大で max(x)-min(x) です。

代替機能

ライブ エディター タスク

islocalmin の機能を対話的に使用するには、ライブ スクリプトに [局所的極値の検出] タスクを追加します。

Find Local Extrema task in the Live Editor

拡張機能

バージョン履歴

R2017b で導入

すべて展開する