単純にする!
移動平均は十分なダンパー装置であるようです; そのままにしておくと、ノイズが多すぎるか、信号が多すぎることに気付いた場合にのみ、サンプル数を増減することができます。次に、この平均化された信号のみを処理します。
探しているパターンマーカーは比較的簡単に検出できるようです。英語で表されるこれらのマーカーは次のとおりです。
ターゲット=勾配が著しく負から正になるときの、平均読み取り曲線の変曲点。したがって、新しい読み取り値が利用可能になるたびに、移動平均とともに計算された勾配値を比較することで、この状況
を検出できるはずです(もちろん、短い遅延で、特定のポイントでの勾配は次のようになります。次の[数]ポイントの平均読み取り値が利用可能になったときに計算されます)
ただし、誤検出を回避するには、望ましくないパターンをフィルタリングすることを目的としたいくつかのパラメーターを定義する必要があります。これらのパラメータは、上記のターゲット定義で「著しく」の意味をより正確に定義します。
暫定的に、関心のあるポイントを検出するための式は、次のように単純にすることができます
(-1 * S (t-1) + S t)> Min_delta_Slope
ここで、
Sはそれぞれ時間t-1およびtでの勾配(これについては詳しく説明します)
Min_delta_Slopeは、必要な勾配の変化を最小限に「シャープ」にする方法を定義するパラメーターです。
正規化されたtおよびY単位を想定すると、Min_delta_Slopeパラメーターを1に近い、または1を超えて設定できます。直感的に値1(ここでも正規化された単位)は、曲線が「到着」したポイントをターゲットにし、下向きの勾配が50であることを示します。 %そして50%(または40%+ 60%または.. 10%、つまりほぼ平坦、90%、つまりほぼ垂直)の上り勾配でポイントを離れました。
これが曲線のわずかな落ち込みである場合にポイントが検出されないようにするために、次のようなより洗練された式を使用して、より多くのポイントを考慮することができます。
(Pm2 * S (t-2) + Pm1 * S (t-1) + P0 * S t + Pp1 S (t + 1))> Min_delta_Slope
ここで、
Pm2、Pm1、P0、およびPp1は、勾配に相対的な重要性を与える係数です。関心のあるポイントの前後のさまざまなポイントで。(Pm2とPm1は、正のパラメーターのみを使用し、式で負の符号を使用しない限り、通常は負の値です)
S t +/- nはさまざまな時間の勾配であり
、Min_delta_Slopeは、必要な勾配の変化をどの程度「鋭く」するかを定義するパラメーターです。最小。
直感的には、この4ポイントの式では、対象のポイントの2つ前の読み取り値と2つ後の読み取り値のポイントでの曲線の形状が考慮されます(直前のポイントと直後のポイントを考慮することに加えて)。パラメータの適切な値が与えられた場合、式では、曲線が2つのタイムスライスで着実に「下降」し、次の2つのタイムスライスで着実に上昇する必要があります。これにより、曲線の小さなディップをマークすることを回避できます。これを達成する別の方法は、 2つ
の[平均]読み取り値間のY値の差を使用して勾配を計算することです。(またはそれ以上)タイムスライス前と現在の[平均]読み取り値。これらの2つのアプローチは似ていますが、わずかに異なる結果を生成します。一般に、Pm2、Pm1、P0、およびP1のパラメーターを使用して、曲線の望ましい形状についてより多くのことを言うことができます。