次の二つの関数で見つけられる。
islocalmax()
islocalmin()
局所的最大値、あるいは最小値と訳されている。引数にMinProminenceというものがあり、地形的な最大値を求める係数になる模様だが、読んでもはっきり値の設定の仕方がわからない。
下記はオシロスコープで取得した、ある制御パルスの時間波形を微分したものを使用している。方形波のため微分すると上下にピークが出る波形になる。このピークの間隔がパルス幅や周期として利用できる。
f2=figure();
tf_p1=islocalmax(pwm1,'minProminence',1);
tf_p2=islocalmin(pwm1,'minProminence',2);
hold on;
plot(t1,pwm1);
plot(t1(tf_p1),pwm1(tf_p1),'gx');
plot(t1(tf_p2),pwm1(tf_p2),'rx');
hold off;
xlim([0,0.0005]);
legend();
実行結果
こんなことが書いてある。
局所的最大値のプロミネンス
局所的最大値 (ピーク) のプロミネンスは、他のピークを基準とした相対的な高さと位置を基準にピークの立ち上がりの程度を測定します。
ピークのプロミネンスを測定するには、最初にピークからの水平線をピークの左方向および右方向に伸ばします。この線が左側および右側のデータと交差する場所を探します。その場所は別のピークかデータの最後のいずれかとなります。これらの場所を左側および右側の間隔の外側の端点としてマークします。次に、両方の間隔の最も低い谷を探します。これらの 2 つの谷のうち大きい方を使用して、その谷からピークまでの垂直距離を測定します。この距離がプロミネンスです。
ベクトル
x
の最大プロミネンスは、最大でmax(x)-min(x)
です。
プロミネンスとは(Matlabの説明)
https://jp.mathworks.com/help/signal/ug/prominence.html
コメントを追加