このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
islocalmax
局所的最大値を検出
説明
は logical 配列を返します。この配列の要素は、TF
= islocalmax(A
)A
の対応する要素で局所的最大値が検出された場合に 1 (true
) となります。
islocalmax
の機能を対話的に使用するには、ライブ スクリプトに [局所的極値の検出] タスクを追加します。
は、前述の構文の任意の入力引数の組み合わせに加えて、1 つ以上の名前と値の引数を使用して局所的最大値を検出するためのパラメーターを指定します。たとえば、TF
= islocalmax(___,Name,Value
)islocalmax(A,'SamplePoints',t)
は、時間ベクトル t
に含まれるタイム スタンプを基準に、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*')
データの行列を作成し、各行の局所的最大値を計算します。
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*')
連続する最大値を表すための方法を指定します。
連続する最大値を含むデータの局所的最大値を計算します。その値の最初の発生に基づいて、各フラット領域の最大値を表します。
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*')
その値のすべての発生を使用して、各フラット領域の最大値を表します。
TF2 = islocalmax(A,'FlatSelection','all'); plot(x,A,x(TF2),A(TF2),'r*')
プロミネンスに基づいて最大値を選択します。
データのベクトルの局所的最大値とプロミネンスを計算し、データを使用してプロットします。
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
最小プロミネンス要件を指定して、データの最も顕著な最大値のみを計算します。
TF2 = islocalmax(A,'MinProminence',2); plot(x,A,x(TF2),A(TF2),'r*') axis tight
入力引数
入力データ。ベクトル、行列、多次元配列、table または timetable として指定します。
操作次元。正の整数スカラーとして指定します。値を指定しない場合、既定値は、サイズが 1 ではない最初の配列の次元です。
m
行 n
列の入力行列 A
を考えます。
islocalmax(A,1)
は、A
の各列のデータに従って局所的最大値を計算し、m
行n
列の行列を返します。islocalmax(A,2)
は、A
の各行のデータに従って局所的最大値を計算し、m
行n
列の行列を返します。
入力データが 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 変数として指定できます。
インデックス方式 | 例 |
---|---|
変数名:
|
|
変数インデックス:
|
|
関数ハンドル:
|
|
変数の型:
|
|
メモ
入力データが timetable
の場合、この名前と値の引数はサポートされません。timetable では、行時間のベクトルをサンプル点として使用します。別のサンプル点を使用するには、目的のサンプル点が行時間に含まれるように timetable を編集しなければなりません。
例: islocalmax(A,'SamplePoints',0:0.1:10)
例: islocalmax(T,'SamplePoints',"Var1")
演算の対象とする table 変数。次の表のオプションのいずれかとして指定します。DataVariables
の値は、入力 table 内の局所的最大値を調べる変数を示します。指摘された変数に関連付けられるデータ型は数値または logical
でなければなりません。
最初の出力 TF
には、DataVariables
で指定されていない変数については false
が格納されます。ただし、OutputFormat
の値が 'tabular'
の場合を除きます。
インデックス方式 | 指定する値 | 例 |
---|---|---|
変数名 |
|
|
変数インデックス |
|
|
関数ハンドル |
|
|
変数の型 |
|
|
例: 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 である場合、または SamplePoints
が datetime
または 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)
です。
代替機能
拡張機能
islocalmax
関数は tall 配列をサポートしていますが、以下の使用上の注意および制限があります。
tall timetable はサポートされていません。
名前と値の引数
ProminenceWindow
に対し値を指定しなければなりません。名前と値の引数
MaxNumExtrema
、MinSeparation
、およびSamplePoints
はサポートされません。DataVariables
の値を関数ハンドルにすることはできません。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
可変サイズ配列のサポートを有効にしなければなりません。
名前と値の引数
ProminenceWindow
はサポートされていません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
islocalmax
関数は、GPU 配列を完全にサポートします。GPU 上で関数を実行するには、入力データを gpuArray
(Parallel Computing Toolbox) として指定します。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2017b で導入入力データが table または timetable の場合は、名前と値の引数 OutputFormat
を 'tabular'
に設定することにより、logical 配列の代わりに表形式の出力 TF
を返します。
入力データが table の場合は、名前と値の引数 SamplePoints
を使用して、サンプル点を table 変数として指定します。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)