レベル検出
レベル検出とは、データが特定の Y 値を通過または到達する X 座標を特定するプロセスです。これは「逆補間」と呼ばれることもあります。別の言い方をすれば、レベル検出は「与えられた Y レベルに対応する X 値は何か」という疑問に答えます。Igor Pro® はこの疑問に対して2種類の答えを提供します。
1つの解答は、Y データが一意の Y 値のリストであり、単調増加または単調減少すると仮定します。この場合、Y 値に対応する X 値は唯一つです。検索位置と方向は重要ではないため、二分探索が最も適切です。これは非常に高速だからです。この種のデータには、BinarySearch または BinarySearchInterp 関数を使います。

もう1つの答えは、取得データの場合のように、Y データが不規則に変動することを前提とします。この場合、Y レベルを横切る X 値が複数存在する可能性があり、返される X 値は、検索の開始位置とデータ内の検索方向によって異なります。FindLevel、FindLevels、EdgeStats、PulseStats コマンドは、この種のデータを扱います。

ウェーブフォームデータにおけるレベル検出
FindLevel コマンドを使って1つのレベル交差を見つけたり、FindLevels コマンドを使ってウェーブフォームデータ内の複数のレベル交差を見つけたりすることができます。これらのコマンドはどちらも、ノイズの影響を軽減するために、検索するデータをオプションで平滑化することができます。データのサブレンジ(一部)は、操作の /R フラグに指定する startX および endX 値に応じて、X 値の昇順または降順で検索できます。
FindLevel は、startX から開始し、endX に向かってレベルの交差が見つかるまで進み、検索範囲内で最初に遭遇したレベル交差の位置を特定します。検索は順次実行されます。FindLevel の出力は、2つの特別な数値変数 V_Flag と V_LevelX です。V_Flag は検索の成功または失敗を示し(0 は成功)、V_LevelX はレベル交差の X 座標を含みます。
例えば、以下のデータが与えられた場合:

コマンド:
FindLevel/R=(-0.5,0.5) signal,0.36
は、このレベル交差情報を Igor Pro の履歴領域に出力します:
V_Flag= 0; V_LevelX= -0.200751;
XYデータにおけるレベル検出
XY データ内のレベル交差の位置を特定するには、Y データを検索し、その X 値が X データ内のどこに位置するかを特定します。これには X データの値が昇順または降順でソートされている必要があります。これを確実にするために、次のコマンドを実行します:
Sort xData,xData,yData
これはデータを昇順に並べ替え、xData の値が昇順になるようにし、かつ XY 対応関係が保持されるようにします。
次に yData 内で V_levelX を見つけます:
FindLevel yData, levelToFind
その後、点傾斜式を用いて少し補間を行うだけで十分です:
// Compute point number (not X) in yData before Y crossing. Variable p1=x2pnt(yData,V_LevelX-deltaX(yData)/2) // Compute slope of line between the two X,Y points before and after the yData level crossing. Variable m=(V_LevelX-pnt2x(yData,p1))/(pnt2x(yData,p1+1)-pnt2x(yData,p1)) // Use the point-slope equation of a line to interpolate the xData value at the level crossing. Variable xAtYlevel= xData[p1] + m * (xData[p1+1] -xData[p1] ) //point-slope equation
エッジ統計
EdgeStats コマンドは、以下に示すように単一のエッジを含むと予想されるデータ領域に対して、単純な統計情報(実際には測定値)を生成します。複数のエッジが存在する場合、EdgeStats は最初に検出されたエッジに対して処理を行います。エッジ統計は、EdgeStats リファレンスで説明されている特別な変数に格納されます。統計項目はエッジレベル、検出された各種「ポイント」の X 座標(ポイント位置)、およびそれらの間の距離です。これらの検出ポイントは実際にはレベル交差の位置であり、通常は実際のウェーブフォームポイントの間に位置します(補間位置です)。

EdgeStats は FindLevel と同じ原理に基づいています。EdgeStats は XY ペアでは動作しません。補間を用いて XY データをウェーブフォームに変換できます。
パルス統計
PulseStats コマンドは、以下に示すように3つのエッジを含むと予想されるデータ領域について、単純な統計量(測定値)を生成します。3つ以上のエッジが存在する場合は、PulseStats は最初に検出された3つのエッジに対して処理を行います。PulseStats は、エッジが1つまたは2つしかない他の2つのケースも処理します。パルス統計量は、PulseStats リファレンスで説明されている特別な変数に格納されます。

PulseStats は EdgeStats と同じ原理に基づいています。PulseStats は XY ペアでは動作しません。
Forum
Support
Gallery
Igor Pro 10
Learn More
Igor XOP Toolkit
Learn More
Igor NIDAQ Tools MX
Learn More