バイスロープクロス点サーチ
波形データアレイのうち、最初に見つかったしきい値とのクロス点とスロープを求めます。インデックスの中間の場合は直線補間して推定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)