Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

islocalmax

局所的最大値を検出

説明

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

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

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

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

すべて折りたたむ

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

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

Figure contains an axes object. The axes object contains 2 objects of type line.

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

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

   0   0   1   0   0
   0   1   0   0   0
   0   0   1   0   0
   0   1   0   1   0
   0   1   0   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 = islocalmax(A,'MinSeparation',minutes(45),'SamplePoints',t);
plot(t,A,t(TF),A(TF),'r*')

Figure contains an axes object. The axes object contains 2 objects of type line.

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

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

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

Figure contains an axes object. The axes object contains 2 objects of type line.

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

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

Figure contains an axes object. The axes object contains 2 objects of type line.

プロミネンスに基づいて最大値を選択します。

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

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

    1.7703    3.5548

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

Figure contains an axes object. The axes object contains 2 objects of type line.

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

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

Figure contains an axes object. The axes object contains 2 objects of type line.

入力引数

すべて折りたたむ

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

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

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

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

    islocalmax(A,1) column-wise operation

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

    islocalmax(A,2) row-wise operation

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

名前と値の引数

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

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

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

データ オプション

すべて折りたたむ

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

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

table 入力のオプション説明
変数名

単一の table 変数名を指定する文字ベクトルまたはスカラー string

'Var1'

"Var1"

変数インデックスのスカラー

table 変数のインデックスのスカラー

3

logical ベクトル

各要素が table 変数に対応する logical ベクトル (対応する変数をサンプル点として指定する場合は true、その他の要素はすべて false)

[true false false]

関数ハンドル

入力として table 変数をとり、1 つの table 変数のみを true とする logical スカラーを返す関数ハンドル

@isnumeric

vartype 添字

1 つの変数のみに対して添字を返す関数 vartype によって生成される table の添字

vartype('numeric')

メモ

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

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

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

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

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

オプション説明
変数名

単一の table 変数名を指定する文字ベクトルまたは string スカラー

'Var1'

"Var1"

変数名のベクトル

各要素が table 変数名である、文字ベクトルの cell 配列または string 配列

{'Var1' 'Var2'}

["Var1" "Var2"]

変数インデックスのスカラーまたはベクトル

table 変数インデックスのスカラーまたはベクトル

1

[1 3 5]

logical ベクトル

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

[true false true]

関数ハンドル

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

@isnumeric

vartype 添字

関数 vartype によって生成される table の添字

vartype("numeric")

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

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

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

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

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

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

極値検出オプション

すべて折りたたむ

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

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

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

値が正の整数の 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 より大きい場合、islocalmax は指定した間隔の中で最大の局所的最大値を選択し、他の局所的最大値はすべて無視します。この処理は、局所的最大値が他に検出されなくなるまで繰り返されます。

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

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

出力引数

すべて折りたたむ

局所的最大値インジケーター。ベクトル、行列、多次元配列、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) です。

拡張機能

バージョン履歴

R2017b で導入

すべて展開する