ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

islocalmin

局所的最小値の検出

説明

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

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 として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable

操作次元。正の整数スカラーとして指定します。既定では、islocalmin はサイズが 1 に等しくない最初の次元に沿って動作します。

たとえば、A が行列の場合、islocalmin(A,1)A の行に沿って動作し、各列の局所的最小値を計算します。

islocalmin(A,2)A の列に沿って動作し、各行の局所的最小値を計算します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

名前と値のペアの引数

オプションの Name,Value の引数ペアをコンマ区切りで指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

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

最小プロミネンス。'MinProminence' と非負のスカラーで構成されるコンマ区切りのペアとして指定します。islocalmin は、プロミネンスが指定した値以上である局所的最小値のみを返します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

プロミネンス ウィンドウ。'ProminenceWindow' と、正の整数スカラー、正の整数の 2 要素ベクトル、正の duration スカラーまたは正の duration の 2 要素ベクトルとで構成される、コンマ区切りのペアとして指定します。この値は、各局所的最小値のプロミネンスの計算対象となる、隣接する点のウィンドウを定義します。

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

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

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

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

局所的最小値が連続して繰り返される場合のフラット領域インジケーター。'FlatSelection' と次のいずれかで構成されるコンマ区切りのペアとして指定します。

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

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

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

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

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

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

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

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | duration

検出する最小値の最大数。'MaxNumExtrema' と正の整数スカラーで構成されるコンマ区切りのペアとして指定します。islocalmin は最も顕著な最小値を指定した数以内で検出します。これは既定では操作次元の長さです。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

サンプル点。'SamplePoints' とベクトルで構成されるコンマ区切りのペアとして指定します。サンプル点は A のデータの位置を表します。サンプル点は等間隔でサンプリングされている必要はありませんが、一意の要素で並べ替えなければなりません。既定では、サンプル点ベクトルは [1 2 3 ...] です。

入力データが timetable の場合、islocalmin はこの名前と値のペアをサポートしません。

データ型: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | datetime | duration

table 変数。'DataVariables' と、変数名、変数名の cell 配列、数値ベクトル、logical ベクトルまたは関数ハンドルのいずれかで構成されるコンマ区切りのペアとして指定します。'DataVariables' の値は、入力 table または timetable のどの列が操作対象であるかを表します。値は、以下のいずれかです。

  • 単一の table 変数名を指定する文字ベクトル

  • 各要素が table 変数名である文字ベクトルの cell 配列

  • table 変数インデックスのベクトル

  • 各要素が table 変数に対応する logical ベクトル。true の場合は対応する変数を含めて、false の場合は対応する変数を除外します。

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

指定した table 変数は数値型または logical 型でなければなりません。

例: 'Age'

例: {'Height','Weight'}

例: @isnumeric

データ型: char | cell | double | single | logical | function_handle

出力引数

すべて折りたたむ

局所的最小値インジケーター。ベクトル、行列または多次元配列として返されます。TF のサイズは A と同じです。

データ型: logical

プロミネンス。ベクトル、行列または多次元配列として返されます。P のサイズは A と同じです。

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

詳細

すべて折りたたむ

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

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

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

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

拡張機能

R2017b で導入