smooth


メニュー情報

解析:信号処理:スムージング

概要

XYデータでスムージングを実行してノイズや不揃いを除去します

追加の情報

この機能は9.1 SR1で更新されています。スムージング手法としてLowess および Loessオプションを使用できます。

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

1. smooth //Perform default smoothing to active data plot or highlighted 1st column in worksheet. smooth %C also works so

2. smooth (1,2) //デフォルト設定を使用して、アクティブワークシートの列1、2のXYデータに対してデフォルトのSavitzky-Golayフィルタリングを実行

3. smooth iy:=Col(2) boundary:=periodic; //境界条件を周期的に設定し、アクティブワークシートの2列目のYデータに対してデフォルトのSavitzky-Golayフィルタリングを実行

4. smooth iy:=Col(2) polyorder:=3; //アクティブワークシートの2列目のYデータに対して、多項式次数を2に設定してデフォルトのSavitzky-Golayフィルタリングを実行

5. smooth iy:=Col(2) method:=pf percent:=70; //パーセンタイルフィルタリングを使用してスムージングを実行。パーセンタイルは70に設定し、アクティブワークシートの2 列目のYデータに対して実行

6. smooth -t "my short noise removal theme.oth" //スムージングダイアログで保存した事前保存テーマファイルを使用してアクティブプロットまたは選択列に対してスムージングを実行

7. smooth -d //スムージングダイアログを開く

Xファンクションの実行オプション

スクリプトからXファンクションにアクセスする場合、追加のオプションスイッチについてのページを参照してください。

変数

表示
変数
I/O

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

入力

XYRange

<active>

スムージングを行いたいXYデータの範囲を指定します。

手法 method

入力

int

sg

使用するスムージングの手法を指定します。デフォルトはSavitzky-Golayです。

オプションリスト:

  • Aav: 隣接平均法 (0)
    この手法はデータの各ポイントの前後で指定したデータポイント数の平均を取り、そのポイントを計算した平均値で置き換えます。
  • sg: Savitzky-Golay (1, デフォルト)
    この手法は、局所的な多項式回帰を実行します。信号データ全体の形状に影響を与えずにノイズを除去する場合に適しています。元のデータ値はフィットした値で置き換えられます。
  • Pf: パーセンタイルフィルタ (2)
    ランクオーダフィルタとして知られています。この手法はデータの各ポイントの前後でデータポイントの指定したパーセンタイルを見つけ、そのポイントをパーセンタイルで置き換えます。ショットノイズを除去する場合に適しています。
  • fft:FFTフィルタ (3)
    この手法はFFTローパスフィルタが基になっています。これはノイズの周波数が真の信号より高い場合に使用します。実際には、双曲線ウィンドウで高周波成分を除去します。カットオフ周波数より大きい周波数は無視されます。
  • lw:Lowess (4)
  • le:Loess (5)
    これら2つのオプションは「locally weighted scatter plot smoothing」(局所的に重み付けされた散布図平滑化) を示します。これらの手法は非常に多くのデータポイントがある場合に適しています。詳細はアルゴリズムページをご覧ください。
  • bm:二項 (6)
    二項フィルタは、重み付け移動平均フィルタで、その重みは二項係数から導かれます。これは、高周波ノイズを取り除くローパスフィルタです。
加重平均 weight

入力

int

0

手法で隣接平均法をを選択した場合に利用できるパラメータです。このパラメータが1にセットする(チェックを付ける)と加重平均が使われます。

範囲指定方法 prop

入力

int

1
この変数は、手法がLowessまたはLoessの場合に利用できます。

オプションリスト:

  • 0=pts: ウィンドウのポイント数
    範囲としてウィンドウのポイントを使用
  • 1=prop: 比率
    範囲として比率 (0-1)を使用
  • 2=x: X値
    範囲としてX値を使用
X値 xval

入力

double

0

範囲指定法X値を選択したとき、X値を指定します。デフォルトでX値 は0.1*(x max-x min)です。

範囲 (0-1) span

入力

double

0.1

これは、範囲指定方法比率を選択したときのみ利用できます( prop = 1)。範囲の比率値を指定します。値が大きいほど曲線はなめらかになります。

ウィンドウ内のポイント数 npts

入力

int

5

手法で、FFTフィルタが選択されていない場合、このパラメータで移動ウィンドウのポイント数を指定します。それ以外の場合、このパラメータを使ってFFTフィルタのカットオフ周波数を制御することができます。この値が大きくなると、スムージングの次数が大きくなります。値は0ではなく、正の数である必要があります。カットオフ周波数の計算については、アルゴリズムを参照して下さい。

境界条件 boundary

入力

int

none

境界条件を指定します。手法でFFTフィルタ/Lowess/Loessが選択されている場合は利用できません。

オプションリスト

  • none:なし
    付加なし
  • reflect:反射
    信号データを両端で反射させてデータを付加します。
  • repeat:繰り返し
    信号データの最後のポイントを繰り返してデータを付加します。
  • periodic:周期的
    データを周期的な信号として扱います。
  • extrap:補外
    線形補外法を使ってデータの両端に信号を付加します。
多項式次数 polyorder

入力

int

2

Savitzky-Golayスムージングオプションの場合に利用できます。多項式次数を指定します。

パーセンタイル percent

入力

double

50

パーセンタイルフィルタで使用するパーセンタイル値を決めます。デフォルトは50%です。これはデータウィンドウ内のデータポイントの中央値を持つ信号を置き換えます。

カットオフ周波数 cutoff

入力

double

0

このパラメータは、手法が FFTフィルタの場合に GUIに表示されます。これは、ウィンドウのポイントから計算されたローパスフィルタのカットオフ周波数を示す読み取り専用の変数です。スクリプトでは使用しないでください。

2のべき乗ポイントへの付加 pad

入力

int

0

このパラメータは、手法が FFTフィルタの場合に利用できます。スクリプトからのみ利用可能です。データポイントの数を2のべき乗で付加するかどうか指定します。1に設定すると、Origin8より前のバージョンで計算した値と同じになります。詳細は、アルゴリズムセクションを参照して下さい。

フィルタの種類 filter

入力

int

new

このパラメータは、手法が FFTフィルタの場合に利用できます。スクリプトからのみ利用可能です。フィルタの種類を指定します。oldに設定すると、Origin8より前のバージョンで計算した値と同じになります。

オプションリスト:

  • new:ローパスパラボリック
ローパスパラボリックフィルタ
  • old:ローパスパラボリック(7.5)
Origin 7.5で使用されているローパスパラボリックフィルタ
基線の減算 baseline

入力

int

two_ends_1

このパラメータは、手法が FFTフィルタの場合に利用できます。スクリプトからのみ利用可能です。FFTフィルタリングを使用する前に基線を減算するかどうか指定します。 オプションリスト:

  • two_ends:終点から得られた直線
FFTフィルタを適用する前に2つの終点からなる直線の値を入力データから減算します。
  • two_ends_1:終点の1%の平均から得られた直線
FFTフィルタを適用する前に終点の1%の平均からなる直線の値を入力データから減算します。
  • none:なし
FFTフィルタリング適用前に入力データから減算は行われません。
出力 oy

出力

XYRange

<新規>

スムージングした信号データの出力先を指定します。

このシンタックスを参照してください。

サンプル

gaussian.datをOriginにインポートする方法を示すサンプルです。
white_noise Xファンクションでホワイトノイズを追加します。
Xファンクションplotxyを使ってノイズデータをプロットします。
データをスムージングして、スムージングデータを新しいグラフにプロットします。

// 新規ブックにデータをロード
fname$ = system.path.program$ + "\Samples\Curve Fitting\Gaussian.dat";
newbook;
impASC;
string bkn$=%H;
// データにノイズを追加
white_noise [bkn$]1!(2) level:=10;
// ノイズデータをプロット
plotxy [bkn$]!(1,2) plot:=200 ogl:=[<new>]<new>;

// ノイズデータをスムージング
newsheet book:=bkn$ name:="Smoothed Data";
copydata [bkn$]1!(1) [bkn$]"Smoothed Data"!(1);
smooth iy:=[bkn$]1!(2) oy:=[bkn$]"Smoothed Data"!(2) npts:=10;

// スムージングデータをプロット
plotxy [bkn$]"Smoothed Data"!(1,2) plot:=200 ogl:=[<new>]<new>;

詳細な情報

詳細は、ユーザガイドをご覧下さい。

関連するXファンクション

fft1, fft_filters, wtsmooth


キーワード:隣接平均法, savitzky golay, fftフィルタ, lowess, loess, 2項, パーセンタイル