findBase

内容

  1. 1 メニュー情報
  2. 2 概要
  3. 3 追加の情報
  4. 4 コマンドラインでの使用法
  5. 5 変数
  6. 6 説明
  7. 7 サンプル
  8. 8 アルゴリズム
  9. 9 参考文献
  10. 10 関連のXファンクション

メニュー情報

概要

XYデータ領域の基線を探します。

追加の情報

Origin Version: 8.0 SR5

コマンドラインでの使用法

findBase iy:=(1,2) pts:=4 max:=0.5;

変数

表示
変数
I/O

データ型
デフォルト
説明
入力データ iy

入力

XYRange

<active>

入力データを指定します
最小の連続する均一なポイント ( 0.5 =半分, 5 = 5ポイント) flat

入力

double

15

これは実際には、dir が0にセットされているときのみ使われます。これを使って、基線の最小長さを定義することができます。平坦な区分がこの変数より長い場合、そのセクションは基線と見なされます。値が1より小さい場合、これは入力曲線全体の長さに対する基線長さの比として見なされ、そうでない場合、ポイント単位での基線の最小長さとして見なされます。
領域オプション(0=すべて, >0 開始から, <0 最後から) dir

入力

int

0

このオプションを使って基線の位置を決めることができます。値が0の場合、基線を曲線のどの位置にでも表示することができます。値が正の場合、基線は曲線の開始位置になります。値が負の場合、基線は曲線の終了位置になります。値がゼロでない場合、この絶対値は、基線を探す最初のポイント(または区間の線形フィットが開始する最初の点)および曲線の開始ポイント(値が正の場合)または終了ポイント(値が負の場合)の間の位置として使用されます。
勾配のしきい値 h

入力

double

0

勾配のしきい値を指定します。勾配の基線はこの値より小さくする必要があります。
初期ポイント(0.01=1%, 5 = 5ポイント) pts

入力

double

4

dir が0の場合に基線を探す時、線形フィットを実行する最初の区間のポイント数を指定します。 dir = 0の場合、これはすべての線形フィットに対するサイズになります。
線形の許容値のチェック tol

入力

double

10

連続した線形のテストに対する勾配/切片のエラー値に掛け算する許容値を指定します。
検索ポイントの最大数(0.5 = 半分, 50 = 50ポイント) max

入力

double

0.5

基線を検索するのに使用する最大ポイント数を指定します。値が1より小さい場合、その値は曲線全体のサイズに対する最大ポイント数のパーセントと見なされます。そうでない場合、この値は基線を検索するのに使用する最大ポイント数と見なされます。
検索する増分のポイント数 step

入力

double

0

dir = 0の場合、この変数は何も影響しません。そうでない場合、これは、線形の区間の終了する場所を探すために、線形フィットが実行される2つの隣り合う区間の距離を使用するのに使用されます。
基線領域の開始インデックス i1

出力

int

<>

基線の開始インデックスの出力を指定します。
基線領域の終了インデックス i2

出力

int

<>

基線の終了インデックスの出力を指定します。
切片 a

出力

double

<>

基線の切片の出力を指定します。
勾配 b

出力

double

<>

基線の勾配の出力を指定します。
切片の誤差 aerr

出力

double

<>

基線の切片の誤差の出力を指定します。
勾配の誤差 berr

出力

double

<>

基線の勾配の誤差の出力を指定します。
Pearson r (相関係数) r

出力

double

<>

基線を検索するのに使用される線形フィットの補正残差二乗和の出力を指定します。
フィット曲線 oy

出力

XYRange

<optional>

フィットした基線データの出力範囲を指定します。
1=内部メッセージを表示 cntrl

入力

int

0

内部メッセージを表示するかどうかを指定します。

説明

この関数はピークを持つ基線領域を探すのに使用されます。データ区間に線形フィットを実行し、線形領域が変化し始めたかどうかを決めるために誤差を見積もり、勾配の変化を比較します。

サンプル

以下は、基線を探すこのXファンクションの使用方法を示すものです。

  1. 「標準」ツールバーの「新規ワークブック」ボタンImage:Button_New_Workbook.pngをクリックして新しいワークブックを作成します。
  2. <Origin Program Folder>\Samples\Curve Fitting\Gaussian.datファイルをインポートします。
  3. 新しい列の追加」ボタンImage:Button_Add_New_Columns.png を2回クリックして2列追加します。
  4. 列Dを選択します。メニューから「列:X列として設定」を選択します。
  5. 列Aと列Bを選択し、「作図:線+シンボル図:線+シンボル」を選択し、グラフを作成します。
  6. コマンドウィンドウfindBase -d と入力し、Fitting: findBase ダイアログボックスを開きます。
  7. 最小の連続する均一なポイント」ボックスに0.1を入力し、「初期ポイント」に4を入力します。
  8. フィット曲線の右にあるボタンをクリックします。ソースデータがあるワークブックに移動します。列Dと列Eを選択します。ダイアログボックスに戻ります。
  9. OK ボタンをクリックします。

コマンドウィンドウに結果を表示して、グラフにフィット曲線が追加されます。

アルゴリズム

dir > 0のとき

これは、連続な線形区間である基線が入力曲線の開始位置に現れるということです。

Xファンクションは区間毎に線形フィットを実行し、連続した線形区間を探します。線形フィットはデータの区間を実行します。そして、勾配の変化は、線形の領域が終了したかどうかを判定するのに使用します。

次のように設定しましょう。

n = npts + step;

piece_size = 3 * step;

m = n + piece_size;

ここで dir, pts , step は、Xファンクションの変数です。

最初に、Xファンクションは、最初のpts ポイントに対して線形フィットを実行します。勾配の値は、 v0にセットされます。そして、n番目から m番目のデータポイントに対して、線形フィットが実行されます。 勾配の値は、 vn にセットされ、勾配の誤差は vErrにセットされます。そして、Xファンクションは次の式が成り立つかをチェックします。

Image:math-2fc3594637ccb4241ca20fc8fe122c82.pngここで dR は、tol 変数で指定される許容値です。

これが成立する場合、線形の領域は終わりです。最初のnpts ポイントを含むセクションのみが線形の部分です。そして、この部分は基線と見なされます。

これが成立しない場合、線形の領域が2番目の区間にも続くということになります。Xファンクションは、その線形部分の最後の位置を探すために、続けて実行されます。 v0 は、 vnとセットされます。線形フィットが、現在の区間の右側のstep ポイントの次の区間で実行されます。新しい vn がこの線形フィットの勾配値にセットされます。また、vErr は新しい勾配エラーにセットされます。また、Xファンクションは、線形部分が次の式で終了するかどうかをチェックします。

Image:math-2fc3594637ccb4241ca20fc8fe122c82.png

これは、線形部分が終わるか、または区間線形フィットに実行される最大ポイントに達するまで繰り返されます。入力曲線の開始位置から始まる連続した線形領域は基線の候補と見なされます。最後に、この候補の基線が十分良いものかどうかを見るためにチェックされます。下記の「基線の候補のチェック」をご覧下さい。

dir < 0のとき

これは、連続な線形区間である基線が入力曲線の開始位置に現れるということです。この連続した線形区間を探すという基本的な考えは、実際には、区間線形フィットが入力曲線の最右端から開始するという点を除けば、「dir > 0」の場合のものと同じです。

dir = 0のとき

これは、基線が入力曲線のどの位置にでも現れます。

Xファンクションは、「dir>0」の場合に使われる方法で、左から右に向かって連続した線形区間を探します。基線の最小長さよりも大きい長さを持つ連続した線形区間 flat変数で決められた場合、検索は中止され、この線形区間は基線の候補と見なされます。そして、この候補の基線が十分良いものかどうかを見るためにチェックされます。下記の「基線の候補のチェック」をご覧下さい。

基線の候補のチェック

候補の基線が十分良いものかどうかを見るためにチェックされます。そこにあるすべての線形部分が見つけられます。そして、Xファンクションのh変数によって指定される勾配のしきい値より小さい勾配を持つ部分が最終的な基線として使われます。

参考文献

関連のXファンクション