バイスロープクロス点サーチ
波形データアレイのうち、最初に見つかったしきい値とのクロス点とスロープを求めます。インデックスの中間の場合は直線補間して推定X位置を算出します。
標準のThreshold 1D Array関数が案外使い物にならないので機能を強化しました。
入力
- 1D Array
波形データアレイ。1次元でなければなりません。
- Threshold Level
しきい値。
- Start Index
検索開始インデックス。
出力
- Cross Index or X
検索結果。インデックスまたは推定されるX位置です。
- Slope
クロス点のスロープ。(+)スロープは1、(−)スロープは−1、不定はゼロ。
- Not found
条件に合うクロス点が見つからなかった場合にTrueになります。
ダイアグラムの解説
- 入力アレイをStart Indexで分割し、後ろを切り出します。
- しきい値を引き算します(後の判断を単純にするため)。
- 最初のデータがマイナスだったら(+)スロープの可能性があるので1D Threshold Arrayでゼロクロスを求め、Start Indexと足します。
- 最初のデータがゼロだったら、その点をクロス点とし、その次の点がプラスなら(+)スロープ、ゼロなら不定、マイナスなら(−)スロープとします。
- 最初のデータがプラスだったら(−)スロープの可能性があるので、アレイに−1を掛けてレベルを反転し、1D Threshold Arrayでゼロクロスを求め、Start Indexと足します。
- 結果が最後のインデックスであって最後のデータとしきい値が一致しない、または結果がアレイの長さより後ならば見つからなかったので、Not foundをTrueにします。
制限または仕様
- 特異なデータで思っているのと違う動きをするかもしれません。
- SCross1.viはStart Indexで指定された最初のデータがしきい値と一致しても検出しませんが、これは検出します。従って直流データでもしきい値が一致すれば検出します。必要に応じて使い分けてください。
ダウンロード
scross2.llb(31KB)
ファイルが古くて開けなかった方はこちらをお試しください:SCross2.vi
(13kB)