クイックスタートWks-SetColVal-QuickStart
値の設定ダイアログボックスの主な機能
値の設定ダイアログボックスは、ユーザが定義した式を1行をとり、この式によって生成された値を、1つあるいは複数のワークシート列(あるいは列の一部分)に出力します。列の計算式ボックスに入力される式は、演算子、列や行の参照、関数、ユーザ定義変数、定数等を組み込むことができます(詳細は下記)。値の設定ダイアログには、構文の色付け機能があります。
オプションのスクリプトタブ:
- 実行前の処理スクリプトタブは、複数行のLabTalkスクリプトを取り、このスクリプトは、列の数式ボックスの式が実行される前に実行されます。これにより、列の計算式で使用する入力データの前処理や、関数、変数、定数の定義などが可能です。実行前の処理スクリプトについての詳しい情報は、列値の設定ダイアログに数式を入力するをご覧ください。値の設定ダイアログのコントロールについては、メニューオプションとダイアログコントロールを参照してください。
- Python関数タブで、列の数式を呼び出すためにPython関数を定義することが出来ます。関数を外部ファイルに保存することもできますが、Python関数タブを使用すると、コードをOriginテンプレートファイルに保存して繰り返し使用できます。さらに、Python関数は列の数式ボックスから直接呼び出すことができます。または、隣の実行前の処理スクリプトタブのLabTalkスクリプトから呼び出すことができます。簡単な例/チュートリアルでのPython関数タブ使用の実例は、以下を参照してください。PythonとOriginのより詳細な情報については、OriginのPythonのドキュメントを参照してください。
| 値の設定ダイアログボックスにサンプルをロードするには、メニューから計算式:サンプルのロードを選択して表示されるリストから、ロードしたいものを選択します。
|
| Origin 2018 SR0より、セルレベル(列レベルではなく)での計算を実行できます。式を使ってセル値を設定を参照してください。
|
スプレッドシートセル表記
Origin 2017 SR0からは、デフォルトでスプレッドシートセル表記 (SCN)が有効になっています。SCNが有効の時、シンプルSCNや2017より前のバージョンをお使いの場合は、列値の設定ボックスかF(x)=列ラベル行のいずれかで、新しい表記、または、旧表記の利用が可能です。「col」や「wcol」を使う場合、いくつかの制限があります。
Origin 2017より前のバージョンでファイル(OPJ、OGWなど)を開くと、ワークブックのSCNは無効となります。古いバージョンのファイルであっても、ウィンドウプロパティダイアログボックスから、SCNを有効にすることができます。SCNを有効にしない場合(スプレッドシートセル表記ボックスにチェックしていない場合)、ワークブック全体の列値の設定とF(x)=に古い列とセル表記を適用しなければいけません。
この新しいスプレッドシートセル表記は列の計算式ボックスとF(x)=ラベル行のみで利用可能です。実行前の処理スクリプトボックス内、またはOrigin内で記述するLabTalkスクリプトでは使用できません。
列とセルを参照
ワークシート内の列やセルの参照は次の方法で行います。
A; // 同じシートの列Aを参照 A1; // 同じシートの列Aの1行目を参照
以下の列の計算式サンプルを参照してください。
他のシートとブックを参照
Origin2017より前のバージョンでは、別のシートとブックで使う範囲変数を値の設定の計算式で定義する必要がありました。上の表のようにスプレッドシートセル表記を使って、他のシートとブックのデータに直接参照することができます。これは、F(x)=ラベル行と「列値の設定」ボックスの両方でサポートされています。スプレッドシートセル表記が、目的のブックで有効になっている必要があります。
以下のシンタックスを使います。
1!A; // 同じブックの最初のシートにある列Aを参照 Sheet1!A; // 同じブックにあるシート[Sheet1]にあるるシートの列Aを参照 [Book1]1!A; // 別のブック[Book1]にある最初のシートのA列を参照 [Book2]Sheet1!B2; // 別のブック[Book2]にあるシート[Sheet1]の列Bの2番目の行を参照
以下の列の計算式サンプルを参照してください。
| デフォルトでは、2!a2 などの参照をF(x)=行またはセル式に入力したときに、Originはシートのシートネームを自動的に代用しません。この動作はLabTalkシステム変数@SCVU=0 の値を変更して、編集できます。
|
列の計算式や実行前の処理スクリプトに何を入力すれは良いですか?
式には以下の項目を含めることができます。範囲変数は、列の計算式で使用する前に、予め定義しておく(例:実行前の処理スクリプトで)必要があります。
実行前の処理スクリプトパネルやスクリプトウィンドウ等で事前定義する必要があります。
| 値の設定ダイアログのメニューコマンドである、wcol(1), Col(A), 関数, 変数は、データの参照、関数、変数、定数を列の計算式や実行前の処理スクリプトに挿入するのに役立ちます。メニューで選択された項目、はカーソル位置に挿入されます。Origin 2017 SR0では、これらのメニュー関数は従来の列と(スプレッドシートセル表記ではない)セル表記をサポートしています。
|
| 実行前の処理スクリプト ボックスでスクリプトを実行する場合、制御条件またはloopスクリプトをロードする簡単な方法があります。実行前の処理スクリプト ボックスを右クリックし、メニューの下部にある条件/Loop を選択し、条件構造やループ構造を選択します。シンタックスは簡単なコメントでカーソルに追加されます。
|
値の設定ダイアログのコントロールについては、メニューオプションとダイアログコントロールを参照してください。
列の計算式サンプル
以下は、列の計算式ボックスで使用できる数式の簡単なサンプルです。
新しいスプレッドシートセル表記
|
従来の表記
|
説明
|
B - C
|
col(B)-col(C)
|
col(B)[i]とcol(C)[i]の差を返します。
|
2!B - 3!C
|
N/A
|
シートインデックス2, col(B)[i]とシートインデックスcol(C)[i]の差を返します。
|
[Book2]Sheet1!A - [Book3]Sheet1!A
|
N/A
|
[Book2]Sheet1!A[i]と[Book3]Sheet1!A[i]の差を返します。
|
[Book2]Sheet1!A - [Book3]Sheet1!A2
|
N/A
|
[Book2]Sheet1!A[i]と[Book3]Sheet1!の差を返します。
|
sin(pi*B)
|
sin(pi*col(B))
|
col(B)[i]の正弦の値にpiを乗じた数を返します。
|
today()
|
変更なし
|
現在の日付を返します。
|
A$ + B$
|
col(A)$ + col(B)$
|
内部で列Aと列Bを文字列に変換して結合します。
|
a > 0,A: Na()
|
col(A)>0? col(A): Na()
|
col(A)>0ならcol(A)に値を返し、そうでなければ欠損値を返します。 (LabTalk Utility FunctionNa()をご覧ください。)
|
B-B1
|
col(B)-col(B)[1]
|
列Bの最初のポイントを列Bの全ての値から減算します。
|
A + StartTime
|
N/A
|
名前付き範囲「StartTime」値を列Aの値に加算します。
|
total(A[i-1:i+3])
|
total(col(A)[i-3:i+3])
|
col(A)のi-3 から i+3 までのサブ範囲の合計を返します。i は行番号です。
|
sum(A:C, D:G, F)
|
N/A
|
列AからC、DからG、およびFの値の行ごとの合計を返します。
|
(wcol(j)*2)-1
|
変更なし
|
j 番目の列(すべての選択された列)の各値に2を掛けて1を引いて、変換するために使用できます。
|
Note:列値の設定かF(x)=列ラベル行でiとjを使う場合、小文字を使います。大文字のIとJは、ワークシート列のショートネームに影響を与えてしまいます。
|
| 「End」または「0」を使用して、列の最後のセルを定義します。 例 total(A[10:end])-B[i] or total(A[10:0])-B[i] .
|
オートコンプリート
Origin 2022以降、列値の設定の列の数式ボックスおよびF(x)=ラベル行は、LabTalkでサポートされている関数と名前付き範囲のオートコンプリートをサポートします。
この機能を使用したくない場合は、列 および/または セルの数式に対して無効にすることができます/ F(x)=:
- メニューの環境設定: システム変数をクリックします。
- 空の変数セルに、FACと入力します。
- 値セルに次のいずれかを入力します(値は加算されます):0 =オートコンプリートをオフにする、1 =セルの数式とF(x)=ラベル行を有効にする、2 =列式を有効にする、3(デフォルト)=セルの数式/F(x)=および列式を有効にする
- OKをクリックしてダイアログを閉じます。
計算式の再利用
値の設定の計算式を実行前の処理スクリプトおよびPython関数コードとともに再利用する場合は、次のことができます。
- (1)値の設定メニューバーの計算式:保存をクリックするか、(2)値の設定の式を保存ボタンをクリックして、数式を保存します。計算式を再利用するには、計算式:ロードをクリックして式を選択します。列ラベル行F(x)=セルを選択した状態で、列:ユーザー式入力を選択するか、セルを右クリックしてロードを選択します。
- ワークブックテンプレートを使用して、値の設定の数式を保存できます。すると、ワークブックテンプレートのインスタンスを開けば、値の設定の式が準備されています。
列の計算式を自動で更新
簡単になった新しいシンタックスを使う場合、列Aと列Bの値を参照している列Cの列の式を定義して、列Aと列Bの間に列を挿入できます。列は式を参照し、列のショートネームが適用されます。ただし、この機能は以下の全ての場合利用できません。
- 列の式がcol()やwcol()の関数を使っている。
- 列の式が「列値の設定」の実行前の処理スクリプトに入力しているスクリプトを使っている。
- 式にブラケット「{}」が含まれている。
- 列の式が、シート名の参照と反して、シートのインデックス参照を含んている(例:1!A vs. Sheet1!A)
列の式がこれらの状況に影響する場合、列の式は更新されません。
追加の情報
クイックサンプル
単一列の値を設定
次の簡単なチュートリアルは、このダイアログを使ってガウス曲線のデータを生成する方法を示しています。
- 標準ツールバーの新規ワークブックボタンをクリックして、新しいワークブックを作成します。
- 列Aを選択し、右クリックして、ショートカットメニューから列値の設定を選択し、値の設定ダイアログを開きます。
- 列の計算式に {-1:0.03:5} と入力し、適用ボタンをクリックします。列Aには一連の数字が入力されます。
- ダイアログを閉じることなく、ナビゲーションボタンのうちの1つを使用して2つ目の列に式を入力します。次へボタンをクリックします。列Bがワークシートで選択されるのが分かります。
- そして、列の計算式編集ボックスに1 + (5/(1.5*sqrt(PI/2)))*exp(-2*((A-2)/1.5)^2) と入力し、再計算ドロップダウンリストで自動を選択します。
- OKボタンをクリックします。値の設定ダイアログが閉じます。次のワークシートのような結果になります。
(列Bの折れ線グラフを作成すると、ワークブックの隣にあるようなグラフになります。)
- 列BのF(X)列ラベルをダブルクリックし、式を1+5/(1.5*sqrt(PI/2))*exp(-2*(A-2)/1.5*2)に変更します。すると、列Bの値は自動的に変換している事がわかります。
(再計算ボタン をクリックすると、グラフも合わせて更新されます。)
| Originは値の設定ダイアログで列のサブ範囲を使用して関数の引数に設定できます。
例えば、列Aのサブ範囲i-3 から i+3 ( i は行インデックス)までの合計を計算するには、列の式編集ボックスに式を入力できます。
Total(A[i-3:i+3])
|
複数列の値を設定
次の簡単なチュートリアルは、値の設定ダイアログを使って瞬時に複数の列に値を入力できるか示します。
- 標準ツールバーの新規プロジェクトボタンをクリックして、新しいプロジェクトを作成します。
- 複数ASCIIのインポートボタンをクリックして、<Origin フォルダ>\Samples\Import and Export\ のパスにあるF1.datとF2.datをインポートします。impASCダイアログで、複数ファイル(第一以外)インポートモードをブックを新たに作って読み込むにしてOKをクリックします。
- 2つのワークブック、F1とF2が作成されます。標準ツールバーの新規ワークブックボタン をクリックし、もう1つワークブックを作成します。
- 3番目のワークブックがアクティブな状態で、列の追加ボタン をクリックします。全ての列を選択し、列:複数列の値を設定とメインメニューから操作するか、右クリックして複数列の値を設定をコンテキストメニューから選択して値の設定ダイアログを開きます。
- スクリプトを表示ボタンをクリックして下部パネルを拡張します。次のスクリプトを実行前の処理スクリプト編集ボックスに入力します。
range r1=[F1]F1!wcol(j); //"j" is the column index.
range r2=[F2]F2!wcol(j);
- 列の式編集ボックスに(r1+r2)/2 と入力します。
- オプション:式セルを直接編集の項目のチェックを外します。
- オプション:式テキストと選択して、式テキストダイアログに(F1+F2)/2を入力してOKボタンをクリックします。
- 値の設定ダイアログのOKボタンをクリック します。結果がワークシートに反映され、F(X)列ラベル行には式では無くて(F1+F2)/2 が表示されます。
| 実行前の処理スクリプトで変数を定義する場合、変数名として小文字を使います。(例:「R1」ではなく「r1」を使う。)大文字を使うと以下のようなエラーが起こります。
列ショートネームの制限が有効です。R1がセルを参照し、変数として定義されません。「列値の設定」スクリプトのエラーのため、Book1_Gの処理ができません。
|
Python関数タブ
Python関数は、必要に応じて、列の数式ボックスまたは実行前の処理スクリプトタブから呼び出すことができます。これらの関数は、外部ファイルで定義すること、もしくは値の設定のPython関数タブで定義することができます。列値の設定ダイアログでこれらを定義する利点は、それらがプロジェクトとともに保存されることです。繰り返し使用するためのテンプレートを使用することもできます。
そのタブで、Python関数は...の形式で定義されます。
def ff(a)
...そして実行前の処理スクリプトタブまたは列の数式ボックスで...として呼び出されます。
py.ff(a)
値の設定ダイアログでPythonを利用する際の詳細は、列値の設定でPython関数を使用を参照してください。
| F(x)=セルが(1)「py.」で始まる場合、および(2)外部ファイルで定義されたPython関数を呼び出す場合は、F(x)=セルを右クリックし、Pythonファイルを開くを選択して、コードビルダIDEでPython関数を開くことができます。
|
サンプル
この簡単なチュートリアルでは、Python関数タブで関数を定義し、列の数式ボックスで呼び出す方法を示します。
- 新しいワークブックを開き、インポート ツールバーにある、単数ASCIIのインポートボタンをクリックします。
- このファイルを参照して開きます<Origin Program Folder>\Samples\Signal Processing\Signal with High Frequency Noise.dat.
- 標準ツールバー中の列の追加ボタンをクリックします。
- 追加した列の先頭をクリックして列を選択し、右クリックして列値の設定を選びます。
- 表示されない場合は、スクリプトを表示ボタンをクリックして下部パネルを拡張します。
- Python関数タブをクリックし、以下をコピー&ペーストしてください。
import numpy as np
from scipy import signal
def smooth(y,npts, norder):
"""
F:Fii
Perform Savitzky-Golay smoothing using scipy signal
"""
#npts: number of points for smoothing window
#norder: polynomial order
y=signal.savgol_filter( np.array(y), npts, norder )
return y
- 列の数式ボックスをクリックし、以下を入力します。
py.smooth(B,101,3)
- OKをクリックすると、列に平滑化された値が入力されます。
|