解析: 信号処理: 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ファンクションにアクセスする場合、追加のオプションスイッチについてのページを参照してください。
| 表示 名  | 
変数 名  | 
I/O と データ型  | 
デフォルト 値  | 
説明 | 
|---|---|---|---|---|
| 入力 | ix | 
 入力 vector<complex>  | 
  | 
 入力信号を指定します。複素数も指定可能です。信号の実数部と虚数部は、異なる列または同じ列に入力できます。デフォルトは<アクティブ>でアクティブデータセットを示します。  | 
| サンプリング間隔 | interval | 
 入力 double  | 
  | 
 サンプリング間隔を指定します。デフォルトは <自動>で、これは自動に計算される間隔に対応しています。詳細についてはアルゴリズムのパートをご覧下さい。  | 
| ウィンドウ | win | 
 入力 int  | 
  | 
 漏れを抑えるのに使用するウィンドウの種類を指定します。詳細についてはアルゴリズムのパートをご覧下さい。 オプションリスト 
  | 
| アルファ値 | alpha | 
 入力 double  | 
 ウィンドウ法がGaussianの場合のみ利用できます。Gaussianウィンドウに対して、アルファパラメータ(標準偏差の逆数)を指定します。  | |
| ベータ値 | beta | 
 入力 double  | 
 ウィンドウ法がKaiserの場合のみ利用できます。Kaiserウィンドウに対して、ベータパラメータを指定します。  | |
| ウィンドウの補正 | correct | 
 入力 int  | 
 入力データに適用したウィンドウによって生じた変更を補正するためのウィンドウ補正因子です。 オプションリスト 
  | |
| 予約 | Reserved | 
 入力 int  | 
  | 
 予約変数です。計算には影響しません。  | 
| 実数、虚数、強度の規格化 | norma | 
 入力 int  | 
  | 
 複素数、実数、虚数、マグニチュード、二乗マグニチュードの正規化を行うかどうかを指定します。デフォルトはFalseです。振幅のようなその他の出力は、この変数によって影響を受けません。詳細についてはアルゴリズムのセクションをご覧下さい。  | 
| 結果の移動 | shift | 
 入力 int  | 
  | 
 低周波数成分を中央にするために結果を再配置するか指定します。  | 
| 位相の巻き解消 | unwrap | 
 入力 int  | 
  | 
 位相の巻き解消するかどうかを指定します。巻きがあると、位相角度が+-180度間でモジュロ減算されます。  | 
| 因子 | factor | 
 入力 int  | 
  | 
 工学分野または科学分野で使われる指数位相ファクターの符号を指定します。 オプションリスト 
  | 
| スペクトルの種類 | st | 
 入力 int  | 
  | 
 パワーが計算されるナイキスト間隔を指定します。他の結果の計算に影響を与えるので注意してください。 オプションリスト 
  | 
| パワーの規格化 | norm | 
 入力 int  | 
  | 
 パワー密度規格化の手法を指定します。詳細はアルゴリズムをご覧下さい。 オプションリスト 
  | 
| プレビュー | pre | 
 入力 int  | 
  | 
 ダイアログでのプレビュー表示を指定します。 オプションリスト 
  | 
| 実数 | re | 
 入力 int  | 
  | 
 FFT結果の実数部のグラフを出力するかどうかを指定します。  | 
| 虚数 | im | 
 入力 int  | 
  | 
 FFT結果の虚数部のグラフを出力するかどうかを指定します。  | 
| 振幅 /位相 | ap | 
 入力 int  | 
  | 
 振幅と位相を組み合わせたグラフを出力するかどうか指定します。  | 
| 位相 | phase | 
 入力 int  | 
  | 
 位相のグラフを出力するかどうか指定します。  | 
| パワー /位相 | pp | 
 入力 int  | 
  | 
 位相のグラフを出力するかどうか指定します。  | 
| 実数/虚数 | ri | 
 入力 int  | 
  | 
 パワーと位相を組み合わせたグラフを出力するかどうか指定します。  | 
| マグニチュード | mag | 
 入力 int  | 
  | 
 マグニチュードのグラフを出力するかどうか指定します。  | 
| 振幅 | amp | 
 入力 int  | 
  | 
 振幅のグラフを出力するかどうか指定します。  | 
| パワー | psd | 
 入力 int  | 
  | 
 パワーのグラフを出力するかどうか指定します。  | 
| dB | db | 
 入力 int  | 
  | 
 dBの結果のグラフを出力するかどうか指定します。  | 
| 規格化dB | ndb | 
 入力 int  | 
  | 
 正規化dBの結果のグラフを出力するかどうか指定します。  | 
| RMS振幅 | rms | 
 入力 int  | 
  | 
 RMS振幅のグラフを出力するかどうか指定します。  | 
| 二乗振幅 | sqr_amp | 
 入力 int  | 
  | 
 二乗振幅のグラフを出力するかどうか指定します。  | 
| 二乗マグニチュード | sqr_mag | 
 入力 int  | 
  | 
 二乗マグニチュードのグラフを出力するかどうか指定します。  | 
| 結果データシート | rd | 
 出力 ReportData  | 
  | 
 出力データシートを指定します。  | 
| 結果グラフシート | rt | 
 出力 ReportTree  | 
  | 
 出力グラフシートを指定します。  | 
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;
詳細は、ユーザガイドをご覧下さい。
キーワード:離散, 振幅, 位相, パワー, ウィンドウの補正