スロープ指定クロス点サーチ
波形データアレイのうち、指定されたスロープでしきい値とのクロス点を求めます。インデックスの中間の場合は直線補間して推定X位置を算出します。
標準のThreshold 1D Array関数が案外使い物にならないので機能を強化しました。
入力
- 1D Array
波形データアレイ。1次元でなければなりません。
- Threshold Level
しきい値。
- Slope
スロープ。立ち上がり(+)または立ち下がり(−)を指定します。
- Start Index
検索開始インデックス。
出力
- Cross Index or X
検索結果。インデックスまたは推定されるX位置です。
- Not found
条件に合うクロス点が見つからなかった場合にTrueになります。
ダイアグラムの解説
- 波形データアレイのStart Indexから後ろを切り出します。
- しきい値を引き算します(後の判断を単純にするため)。
- スロープが(−)ならばアレイに-1を掛け、レベルを反転します。
- データがゼロ以下になるインデックスまで進め、そこからゼロクロスを探します(Threshold 1D Arrayは立ち上がりしか検出できません)。
- Start Indexを足します。
- 結果が最後のインデックスであって最後のデータとしきい値が一致しない、またはNaNならば見つからなかったので、Not foundをTrueにします。
制限または仕様
- 特異なデータとしていくつか考えられます。Start Indexで指定された最初のデータがしきい値と完全に一致した場合は検出しません。
- 立ち上がりの場合、しきい値より小さいデータがあって、その後にしきい値に一致したら、その次にしきい値を突き抜けなくても採用します(立ち下がりではレベルを逆に考えてください)。
- 直流(レベルがすべて同じ)データで、しきい値が同じでもNot foundになります。
ダウンロード
scross1.llb(29KB)
ファイルが古くて開けなかった方はこちらをお試しください:SCross1.vi
(12kB)