fft1


メニュー情報

解析: 信号処理: FFT: FFT

概要

フーリエ変換を計算します

追加の情報

この機能は8.0 SR5.で更新されています。

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

1. fft1 ix:=Col(1); 
2. fft1 ix:=(col(2),col(3)); 
3. fft1 ix:=Col(1) interval:=2; 
4. fft1 ix:=Col(1) win:=hanning correct:=power; 
5. fft1 ix:=Col(1) shift:=1; 
6. fft1 ix:=Col(1) psd:=1 norm:=ssa st:=oneside; 

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

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

変数

表示
変数
I/O

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

入力

vector<complex>

<active>

入力信号を指定します。複素数も指定可能です。信号の実数部と虚数部は、異なる列または同じ列に入力できます。デフォルトは<アクティブ>でアクティブデータセットを示します。

サンプリング間隔 interval

入力

double

1

サンプリング間隔を指定します。デフォルトは <自動>で、これは自動に計算される間隔に対応しています。詳細についてはアルゴリズムのパートをご覧下さい。

ウィンドウ win

入力

int

rect

漏れを抑えるのに使用するウィンドウの種類を指定します。詳細についてはアルゴリズムのパートをご覧下さい。

オプションリスト

  • 0=rect:矩形
    矩形ウィンドウ
  • 1=welch:Welch
    Welchウィンドウ
  • 2=tri:Triangular
    Triangularウィンドウ
  • 3=bartlett:Bartlett
    Bartlettウィンドウ
  • 4=hanning:Hanning
    Hanningウィンドウ
  • 5=hamming:Hamming
    Hammingウィンドウ
  • 6=blackman:Blackman
    Blackmanウィンドウ
  • 7=gauss:Gaussian
    Gaussianウィンドウ
  • 8=kaiser:Kaiser
    Kaiserウィンドウ
アルファ値 alpha

入力

double

0

ウィンドウ法がGaussianの場合のみ利用できます。Gaussianウィンドウに対して、アルファパラメータ(標準偏差の逆数)を指定します。

ベータ値 beta

入力

double

0

ウィンドウ法がKaiserの場合のみ利用できます。Kaiserウィンドウに対して、ベータパラメータを指定します。

ウィンドウの補正 correct

入力

int

amplitude

入力データに適用したウィンドウによって生じた変更を補正するためのウィンドウ補正因子です。

オプションリスト

  • none:なし
    補正なしが適用されます。
  • amp:振幅
    振幅補正が適用されます。
  • power:パワー
    エネルギー補正が適用されます。
予約 Reserved

入力

int

0

予約変数です。計算には影響しません。

実数、虚数、強度の規格化 norma

入力

int

0

複素数、実数、虚数、マグニチュード、二乗マグニチュードの正規化を行うかどうかを指定します。デフォルトはFalseです。振幅のようなその他の出力は、この変数によって影響を受けません。詳細についてはアルゴリズムのセクションをご覧下さい。

結果の移動 shift

入力

int

1

低周波数成分を中央にするために結果を再配置するか指定します。

位相の巻き解消 unwrap

入力

int

1

位相の巻き解消するかどうかを指定します。巻きがあると、位相角度が+-180度間でモジュロ減算されます。

因子 factor

入力

int

ee

工学分野または科学分野で使われる指数位相ファクターの符号を指定します。

オプションリスト

  • ee:-1 (電子工学分野)
    位相ファクターの符号は科学分野とは逆になります。
  • science:+1 (科学分野)
    位相ファクターは『Numerical Recipes in C, 2nd edition』の503ページに記載の公式に従って設定されます。
スペクトルの種類 st

入力

int

auto

パワーが計算されるナイキスト間隔を指定します。他の結果の計算に影響を与えるので注意してください。

オプションリスト

  • auto:<自動>
    入力信号が実数の場合、片側が選択されます。そうでなければ両側が選択されます。このオプションが選択されると、入力データを見て複素数かどうかを決定します。入力データがComplexデータ型の列に保存されていてもデータには実数部しかない場合、複素数ではなく、実数とみなし、片側スペクトルに結果を入れます。 あるいは、入力データが虚数部としてすべてゼロを持つ場合、Originはこの入力データを実数とみなし、片側スペクトル生成します。
  • oneside:片側
    片側のパワーが計算されます。
  • twoside:両側
    両側のパワーが計算されます。
パワーの規格化 norm

入力

int

msa

パワー密度規格化の手法を指定します。詳細はアルゴリズムをご覧下さい。

オプションリスト

  • msa:MSA-平均二乗振幅
    平均平方振幅法
  • ssa:SSA-二乗和振幅
    二乗和振幅法
  • tisa:TISA-時間間隔二乗振幅
    時間間隔二乗振幅法
プレビュー pre

入力

int

ap

ダイアログでのプレビュー表示を指定します。

オプションリスト

  • none:なし
    なし
  • ap:振幅 /位相
    振幅と位相の両方
  • pp:パワー /位相
    パワーと位相の両方
  • amp:振幅
    振幅
  • img:虚数
    変換データの虚数部
  • mag:マグニチュード
    マグニチュード
  • phase:位相
    位相
  • power:パワー
    パワースペクトルまたはパワー密度
  • real:実数
    変換データの実数部
  • ri:実数 /虚数
    変換データの実数部と虚数部の両方
  • db:dB
    dB単位での振幅
  • ndb:正規化dB
    dB単位で正規化された振幅
  • rms:RMS振幅
    RMS振幅
  • sqamp:方形振幅
    二乗振幅
  • sqmag:方形強度
    二乗マグニチュード
実数 re

入力

int

1

FFT結果の実数部のグラフを出力するかどうかを指定します。

虚数 im

入力

int

1

FFT結果の虚数部のグラフを出力するかどうかを指定します。

振幅 /位相 ap

入力

int

1

振幅と位相を組み合わせたグラフを出力するかどうか指定します。

位相 phase

入力

int

0

位相のグラフを出力するかどうか指定します。

パワー /位相 pp

入力

int

0

位相のグラフを出力するかどうか指定します。

実数/虚数 ri

入力

int

1

パワーと位相を組み合わせたグラフを出力するかどうか指定します。

マグニチュード mag

入力

int

1

マグニチュードのグラフを出力するかどうか指定します。

振幅 amp

入力

int

0

振幅のグラフを出力するかどうか指定します。

パワー psd

入力

int

1

パワーのグラフを出力するかどうか指定します。

dB db

入力

int

1

dBの結果のグラフを出力するかどうか指定します。

規格化dB ndb

入力

int

0

正規化dBの結果のグラフを出力するかどうか指定します。

RMS振幅 rms

入力

int

0

RMS振幅のグラフを出力するかどうか指定します。

二乗振幅 sqr_amp

入力

int

0

二乗振幅のグラフを出力するかどうか指定します。

二乗マグニチュード sqr_mag

入力

int

0

二乗マグニチュードのグラフを出力するかどうか指定します。

結果データシート rd

出力

ReportData

[<input>]<new>

出力データシートを指定します。

結果グラフシート rt

出力

ReportTree

[<input>]<new template:=graph>

出力グラフシートを指定します。

サンプル

  • アクティブワークシートの2列目のデータについてデフォルトの設定で1D FFTを実行するには、次のスクリプトを使用します。

fft1 col(2)

  • コードサンプル
// このサンプルでは、太陽黒点データの2つの日付範囲から2つの異なるFFT振幅をプロットして、約11年の太陽黒点周期を示します
// データインポート
string fname$ = system.path.program$ + "Samples\Signal Processing\dayssn.dat";
//col(1) = year, col(2)=month, col(3)=day, 
//col(4) = date values in contiguous year with fractions
//col(5) = observation
// 5列のcol(4)=X、col(5)=Yに設定したシートを用意
newbook s:=0;newsheet cols:=5 xy:="NNNXY"; 
impasc;
// 欠損値を置き換えるために補間して結果をcol(6)に入れる
interp1q 4 (4,5) 6;
// データ用移管料
range rData1 = 6[1:14609];// yearの行範囲 1818 から 1858
range rData2 = 6[54057:end];// yearの行範囲1966 - 2006

// 次に、fft1を使用してFFTを開始し、ReportDataシートとReportTableシートを作成
fft1 rData1;
//XFを実行後、同じ名前のツリーが作成される。ここでは、fft1.rdを使用してReportDataノードを作成
range rReportData1=fft1.rd$;//FFT結果からのレポートデータを保持する範囲
range rAmp1=%(rReportData1.getlayer()$)col(Amplitude);
rAmp1[C]$="1818 - 1858"; // コメントを変更してグラフの凡例を改善
fft1 rData2;
range rReportData2=fft1.rd$;
range rAmp2=%(rReportData2.getlayer()$)col(Amplitude);
rAmp2[C]$="1966 - 2006";
 
// 新規の空のグラフを開く。必要に応じてテンプレートを指定
win -t plot;
// アクティブなグラフレイヤにプロットを出力
plotxy rAmp1 plot:=200 color:=color(red) o:=<active>;
plotxy rAmp2 plot:=200 color:=color(blue) o:=<active>;
// ピークを表示するために拡大
x1=0;x2=0.5;y1=0;y2=100;
// 縦線で11年をマーク 
draw -n peakval -l -v 1/11; 
peakval.linewidth = 3;
peakval.color = color(orange);
// テキストラベル追加
label -n peaklabel \b(11 Year Cycle of Sunspots);
peaklabel.x = peakval.x + 1.1 * peaklabel.dx / 2;
peaklabel.y = (y1 + y2) / 2;
peaklabel.fsize = 30;
  • ほかのサンプルは、XFスクリプトダイアログを参照してください(F11を押す)。

詳細な情報

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

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

ifft1, fft2, ifft2


キーワード:離散, 振幅, 位相, パワー, ウィンドウの補正