Xファンクションのレポートデータサンプル
内容 |
サマリー
このサンプルでは、複数XYデータセットを取得し、それぞれについて線形フィットを実行してフィットデータを新しい結果シートに出力します。
出力データ型はReportTreeのとき、ダイアログには、再計算コンボボックスが表示され、レポートシートの再計算モードを「手動」、「自動」、「なし」にセットできます。
学習する項目
- 複数XYデータセットで動作する方法
- 再計算の鍵付きの新しい結果シートにデータをレポートする方法
ステップ
- F10キーをおして、Xファンクションビルダを開き、Xファンクションの名前と変数を下図のように入力して、保存
をクリックします。

- このXファンクションをコードビルダで開き、ソースコードを編集します。まず、以下のように必要なヘッダファイルを含めます。
#include <ReportTree.h> // ReportTableクラスに必要
- //put your own support static functions
hereという行の下に、必要なマクロを追加します。このマクロは、Xファンクションのメイン関数で使用されます。
// ID はどの値でも良いが、固有である必要がある #define TABLE_ID 1 #define SUBNODE_ID_BEGIN 1000
- Xファンクションのメイン関数FitLinearReportに以下のコードを追加し、指定したデータ範囲からXYデータを取得し、それぞれ線形フィットしてレポートシートを作成します。
// レポート表を作成 ReportTable rt; rt = rd.CreateTable("ReportData", "Fitted Data", TABLE_ID); int nSubID = SUBNODE_ID_BEGIN; DWORD dwRules = DRR_GET_DEPENDENT | DRR_NO_FACTORS; int nNumData = iy.GetNumData(dwRules); for(int nRange = 0; nRange < nNumData; nRange++) { DataRange drOne; iy.GetSubRange(drOne, dwRules, nRange); vector vx, vy; drOne.GetData(dwRules, 0, NULL, NULL, &vy, &vx); // 線形フィットには、2つのパラメータが存在 FitParameter sFitParameter[2]; if( STATS_NO_ERROR == ocmath_linear_fit(vx, vy, vy.GetSize(), sFitParameter) ) { // フィットXデータをレポート表に追加 string strName = "X" + (nRange+1); string strLongName = "X"; rt.AddColumn(vx, strName, nSubID++, strLongName, OKDATAOBJ_DESIGNATION_X); // フィットYデータを計算 double dIntercept = sFitParameter[0].Value; double dSlope = sFitParameter[1].Value; vector vFitY; vFitY = vx * dSlope + dIntercept; // フィットYデータをレポート表に追加 strName = "Y" + (nRange+1); string strRange; strRange = drOne.GetDescription(GETLC_COL_LN_ONLY); strLongName = "Fitted data on " + strRange; rt.AddColumn(vFitY, strName, nSubID++, strLongName, OKDATAOBJ_DESIGNATION_Y); } }
Xファンクションを実行する
- ワークシートにOriginExePath\Samples\Curve FittingフォルダのLinear Fit.datファイルをインポートします。
- 全ての列を選択して、スクリプトウィンドウでFitLinearReport -d を実行すると、以下のようなダイアログが開きます。
- デフォルトのまま、OKボタンをクリックします。3つのグループフィッティングXYデータセットのレポートシートが生成されます。

