Xファンクション概要

Xファンクションは、LabTalkスクリプトからOriginの機能のほとんどすべてを同じ方法で利用することができます。 Xファンクションを使う最も良い方法は、Xファンクションを使う多くのサンプルを利用することです。スクリプトからアクセスできるXファンクションの一覧はLabTalkでサポートしているXファンクションのセクションにあります。

構文

スクリプト例のXファンクションは、その独特の構文で認識できます。

xFunctionName [argument1:=<range,name or value> argument2:=<range,name or value> ...][ -switch];

一般的な注意点:

  • 引数は入力、出力、または必要なパラメータです。
  • 複数の入力、出力、パラメータが存在する場合があります。
  • 通常、各引数にはデフォルト値があるため、Xファンクションは引数のサブセットを使用して呼び出すことができます。


Xファンクション引数の順序に関する注意:

  • Xファンクションはデフォルトで、その入力と出力の引数が特定の順序で入力されます。X-Function -h を実行してヘルプを表示します。
  • Originの指定順序で引数が指定された場合、引数名を入力する必要はありません。
  • 引数名を明示的に入力する場合、任意の順序で引数を指定できます。
  • 省略された引数が指定された順序で最初に来て、その後に任意の順序で明示的に入力された引数が続くのであれば、引数の処理を混在させることができます。
  • 引数名は、引数名の後ろにある文字をトリミングして短縮可能ですが、短縮名は固有である必要があります。

次のサンプルは、fitpoly Xファンクションを使って、これらについて説明しています。

サンプル

xfunctionname -hvを実行して引数と順序を確認します。

fitpoly -hv; //全変数を表示
Variables:
  iy: [in] 
  polyorder: [in] 
  fixint: [in] 
  intercept: [in] 
  coef: [out] 
  oy: [out] 
  N: [out] 
  AdjRSq: [out] 
  RSqCOD: [out] 
  err: [out]

fitpolyを呼び出すときに、Originは変数セクションにリストされている引数を待ちます。

fitpoly iy:=XYrange polyorder:=int fixint:=int intercept:=double coef:=vector oy:=XYRange N:=int adjRSq:=double RSqCOD:=double err:=vector;

引数の順序に従い引数名を明示的に記述

fitpoly iy:=(1,2) polyorder:=4 fixint:=0 intercept:=0 coef:=3 oy:=(4,5) N:=100 AdjRSq:=adjr2 RSqCOD:=cod err:=6;

これはOriginに以下の指示をします。

  • iy:=(1,2) - XYデータをフィット (Xはアクティブシートの列1、Yはアクティブシートの列2)
  • polyorder:=4 - 4次
  • fixint:=0 - 切片固定なし
  • intercept:=0 - 切片nの初期値は0
  • coef:=3 - アクティブシートの3列目に座標を配置
  • oy:=(4,5) - フィット後のXYデータを配置 (xはアクティブシートの列4、Yはアクティブシートの列5)
  • N:=100 - 出力XYデータのポイント数は100
  • AdjRSq:=adjr2 - 計算されたAdjRSq値は変数adjr2に置く
  • RSqCOD:=cod - 計算されたRSqCOD値は変数codに置く
  • err:=6 - 多項式係数エラーをアクティブシートの列6に置く

引数の順序に従う場合引数名はスキップ可能

fitpoly (1,2) 4 0 0 3 (4,5) 100 adjr2 cod 6;

それぞれの値は対応する引数に割り当てられます。例えば、(1,2)はiyに、4はpolyorderのように割り当てられます。(1,2)のように括弧内の値は一つの引数に割り当てられます。

明示的な引数名の場合引数の順序に従わずに記述可能

fitpoly coef:=3 N:=100 polyorder:=4 oy:=(4,5) iy:=(1,2);

リストされていない引数については、Xファンクションで定義されたデフォルトの値が使用されます。例えば、

  • 切片は固定せず0で開始
  • AdjRSq、RSqCOD、多項式係数エラーは出力しない

部分的に引数の順序に従う

fitpoly (1,2) 4 oy:=(4,5) N:=100 coef:=3;

最初の2つの引数は定義された順序に従うため、引数名はスキップします。そのあとの引数は明示的に記述してランダムに記述します。引数がリストされていない場青、デフォルト値を使用します。

引数リスト内で一意である限り引数名は短縮可能

以下のコードでは、poly polyorderco coefooyの短縮形です。これらは全て一意です。

fitpoly iy:=(1,2) poly:=4 co:=3 o:=(4,5) N:=100;


次の例では、i から始まる2つの引数(iyintercept) があるため、エラーになります。Originは、i がどの引数であるか判断できません。

fitpoly i:=(1,2) poly:=4 co:=3 o:=(4,5) N:=100;

複数行でXファンクションの呼び出しを記述

fitpoly 
coef:=3 
N:=100 
polyorder:=4 
oy:=(4,5) 
iy:=(1,2);

Xfannkusyonn 呼び出しは、引数名が明示的に入力されている場合複数行で記述できます。

オプションスイッチ

-h-d のようなオプションスイッチは、スクリプトからXファンクションを実行する代替のモードにアクセスします。 これらは、ほかの引数の有無にかかわらず使用できます。 オプションスイッチ (および該当する場合はその値) は、引数リストのどこにでも配置できます。 表では、Xファンクションの主要なオプションスイッチをまとめています。

名前 関数
-h スクリプトウィンドウにヘルプファイルの内容を出力
-e XファンクションビルダでXファンクションを表示して定義内容を確認
-d パラメータ入力のためにグラフィカルユーザインタフェースダイアログを開く
-s サイレントモードで実行。結果は結果ログに送られない
-t <themeName> 事前保存テーマを使用
-r <value> 再計算モードを設定し、入力が変更した場合の出力を手動/自動で更新

オプションスイッチについての詳細は、Xファンクションの実行オプションをご覧下さい。


ダイアログ設定からスクリプトを生成

Xファンクションを呼ぶ最も簡単な方法は、 -d オプションを使い、ユーザインターフェース(GUI)を使ってその設定を行うことです。

GUIで、ダイアログ設定が行われると、ダイアログテーマのフライアウトメニューのスクリプトを生成 を選んで、設定に対応するLabTalkスクリプトを生成することができます。現在のGUI設定に合致するスクリプトがスクリプトウィンドウに出力され、それをバッチ用のOGSファイル、または他のプロジェクトにコピー&ペーストすることができます。


Smooth_GS.png

Note: ダイアログテーマボックスと、対応するスクリプトの生成フライアウトメニューは、-d オプションで開く全てのXファンクションダイアログで利用可能ではありません。例えば、rnormalize -dでは利用できますが、fitpoly -dでは利用できません。

スクリプトの生成機能を使用して表示される情報の量は、システム変数 @GASによって制御できます。デフォルトでは@GAS=0ですが、この値は環境設定メニューのシステム変数メニューで変更できます。