2

私はいくつかの作業を行っており、ある期間にわたるいくつかのガスの濃度の補間されたfftを、同じデータのロンブスカーグルピリオドグラムと比較しています。私はscipyのfft関数を使用してフーリエ変換を計算し、次にこれのモジュラスを2乗して、パワースペクトル密度と思われるものを10億分の1(ppb)の2乗単位で求めています。

ロンブスカーグルプロットをFFTとほぼ正確なパターンに一致させることができますが、同じスケールの大きさになることはありません。ロンブスカーグルパワーはパワースペクトル密度であると思っていたとしても、FFTパワースペクトル密度は常に高くなります。今私が使用しているlombコード:http ://www.astropython.org/snippet/2010/9/Fast-Lomb-Scargle-algorithmは、データセットを正規化し、平均を取り除いて、データからの分散の2倍で除算します。したがって、同じ方法でFFTデータを正規化しましたが、それでも大きさが一致していません。

したがって、私はさらに調査を行ったところ、正規化されたロンブスカーグルパワーは単位がない可能性があり、したがってプロットを一致させることができないことがわかりました。これは私を2つの質問に導きます:

  1. 正規化されたリムスカーグルペリオグラムのパワースペクトル密度(ある場合)は何単位ですか?

  2. マグニチュードとパターンの観点から、fftプロットをlomb-scargleプロットと一致させるにはどうすればよいですか?

ありがとうございました。

4

2 に答える 2

6

級数のフーリエ変換の2乗係数は、エネルギースペクトル密度(ESD)として定義されます。パワースペクトル密度(PSD) の推定値に変換するには、ESDをシリーズの長さで割る必要があります。

単位

PSDの単位は、[units] ** 2 / [frequency]です。ここで、[units]は元のシリーズの単位を表します。

正規化

適切な正規化をチェックするために、ホワイトノイズのPSDを数値積分することができます(既知の分散を使用)。統合されたスペクトルが系列の分散に等しい場合、正規化は正しいです。ただし、係数2(低すぎる)は正しくなく、PSDが両側に正規化されていることを示している可能性があります。その場合、2を掛けるだけで、適切に正規化された片面PSDが得られます。

numpyを使用して、randn関数はガウス分布の疑似乱数を生成します。例えば

10 * np.random.randn(1, 100)

平均=0および分散=100の1行100列の配列を生成します。サンプリング周波数がたとえば1Hzの場合、片面PSDは理論的には[0,0.5]Hzから200ユニット**2/Hzでフラットになります。したがって、統合されたスペクトルは10になり、系列の分散に等しくなります。

アップデート

リンクしたPythonコードに含まれている例を変更して、分散1、サンプリング頻度10の正規分布の長さ20の系列の正規化を示しました。

import numpy
import lomb
numpy.random.seed(999)
nd = 20
fs = 10
x = numpy.arange(nd)
y = numpy.random.randn(nd)
fx, fy, nout, jmax, prob = lomb.fasper(x, y, 1., fs)
fNy = fx[-1]
fy = fy/fs
Si = numpy.mean(fy)*fNy
print fNy, Si, Si*2

これは私にとって、次のようになります。

5.26315789474 0.482185882163 0.964371764327

これはあなたにいくつかのことを示しています:

  1. 要求される「ナイキスト」周波数は、実際にはサンプリング周波数です。
  2. 結果をサンプリング周波数で割る必要があります。
  3. 出力は両面PSDに対して正規化されているため、2を掛けると、積分されたスペクトルはほぼ1になります。
于 2013-02-18T19:52:19.227 に答える