Tutorial-XF
Xファンクションは、LabTalkスクリプトからOriginの機能のほとんどを一律に利用できます。
Xファンクションを呼び出す構文は以下の通りです。
xFunctionName [argument1:=<range,name or value> argument2:=<range,name or value> ...][ -switch];
オプションスイッチは、スクリプトからXファンクションを実行する代替のモードにアクセスします。各Xファンクションで、-hスイッチを使ってヘルプファイルにアクセスして引数および定義を出力できます。
xFunctionName -h;
Xファンクションの操作は、多くの場合Xファンクションop_changeでアクセス可能なオプションツリーに関連付けられています。Xファンクションop_changeを使って、引数の変更やXファンクション操作の再実行が可能です。
Xファンクションがレポートデータを生成する場合、データを取得して指定したワークシート/列またはツリー変数に配置できます。
このチュートリアルでは、以下の項目について解説します。
//ワークブックのロングネームを"Curves"に設定 //ワークブックのショートネーム文字列変数bkn$に保存 newbook name:="Curves" result:=bkn$;
impASC -d; //"-d" はXファンクションの実行オプションでグラフィカルインターフェースを開くときに使用
//Note: ファイルパスはOrigin EXEパスにより異なります impASC fname:="C:\Program Files\OriginLab\Origin2016\Samples\Curve Fitting\Polynomial Fit.dat" options.sparklines:=0 options.FileStruct.NumericSeparator:=0 options.Cols.ColDesign:=<Unchanged> options.Names.FNameToSht:=0 options.Names.FNameToBk:=0 options.Names.FNameToBkComm:=0;
fitpoly iy:=[%(bkn$)]!(1,2) polyorder:=2 coef:=<new> oy:=[<Input>]<new>!<new> AdjRSq:=arsq RSqCOD:=rsq -r 1;
range r1 = [%(bkn$)]%(page.active$)!col(1);
op_change ir:=r1 tr:=mytree;
mytree.=;
//入力データを変更 mytree.xfGetN.iy.Range1.Y$ = "[%(bkn$)]1!C"; //多項式次数を変更 mytree.xfGetN.polyorder = 3;
op_change ir:=r1 tr:=mytree op:=run;
Xファンクション操作からレポートデータを取得し、指定したブック/シート/列やツリー変数に送信できます。
newsheet; //文字列レジスタ%Bのシート名を取得 %B = page.active$;
col(A) = {13.2, 14.1, 11.7, 23.9, 10.3};
//ツリー変数trにレポートデータを出力 //trがない場合、作成 grubbs ix:=col(A) rt:=tr;
tr.=;
//外れ値と疑われる行番号を取得 double rindex = tr.Stats.Stats.C2; //conclusion文字列を取得 string conclusion$ = tr.Stats.Footer$; //外れ値と疑われるデータセルの右に結論文を表示 col(B)[$(rindex)]$ = conclusion$; //列幅を調整してテキストを表示 wks.col2.width=40;
//新しいワークシート"Result"を作成 newsheet name:=Result; //Resultワークシートにレポートデータを送信 grubbs ix:=[%H]%B!col(A) rt:=[<Input>]Result!; //Note: Resultという名前のシートがない場合、上述のnewsheetスクリプトはなくても構いません //自動的に作成されます
非線形のカーブフィット(Xファンクションnlbegin/nlfit/nlend)のレポートツリーを取得する場合、Xファンクションgetnlrも使用できます。