対数間隔のパワースペクトルを計算するにはどうすればよいですか?


20

周波数が対数間隔になっているパワースペクトルを計算したいと思います。

Welch法トレードオフの結果として得られるパワースペクトルの周波数分解能及び平均の数(結果、すなわち誤差)との間に存在します。このトレードオフを動的にしたい、つまり、低周波数でより良い解像度を得るために、低周波数ポイントの平均を少なくします。

これを行う標準的な方法はありますか?

1つの方法は、最初pwelchに非常に高い解像度(平均数が少ない)で行い、次に対数ビニングを使用して結果のスペクトルを再ビンニングすることです。


2
通常、通常のスペクトルを計算してから、単純にログスケールでデータをプロットします。修正されたDFTの定義を直接使用しなくてもよいかどうかはわかりませんが、実際に方法があるかどうかを確認したいと思います。
フォノン

興味のある人のためのOPの関連SO質問
Loremのイプサム

SOに関する別の関連する質問:stackoverflow.com/questions/9849233/…–
nibot

回答:


9

この質問に直接対処する論文を見つけました。

論文の最初のいくつかの図は、このアルゴリズムが解決する問題をうまく示しており、参考文献には他のアプローチ(定数Q変換、焼き戻しフーリエ変換、調査記事など)の有用な参考文献が含まれています。

彼らのアプローチは、既存のFFTベースのパワースペクトル推定の出力を再ビン化するのではなく、対象の(対数間隔の)周波数で離散フーリエ変換のみを計算することです。推定される各周波数に対して、彼らは基本的にウェルチのアルゴリズムを実装しますが、各周波数に対して特別に選択された変換長(したがって、平均の数)を使用します。各周波数ビンの計算では、時系列全体が使用されますが、セグメントが異なります。結果には、解像度(ビン幅)が周波数の滑らかな関数であり、結果をパワースペクトル密度またはパワースペクトルとして較正できるという望ましい特性があります。

Matlabの実装はこちら:https : //github.com/tobin/lpsd

ここに画像の説明を入力してください 開示:この論文の著者は、私と同じ機関にいます。


1
この方法でスペクトルを計算する利点は何でしょうか?この方法の動機は何ですか?
スペイシー

1
FFTを使用してパワースペクトルを計算し、状況によっては再ビニングするよりも高速です。
nibot

Pythonの実装を開始しました:github.com/rudolfbyker/lpsdまだテストが必要です。貢献は大歓迎です。
-rudolfbyker

1

この場合、最小二乗法を使用して、既知の値のリストの頻度を計算します。最も一般的な方法はLombメソッドです。FFTまたはDFTと非常によく似た動作をしますが、特定の周波数でのみ周波数を計算し、問題があれば、欠落データを処理できます。アイデアは次のとおりです。

  1. サンプリングする目的の周波数帯域に適合する、計算する周波数のリスト()を決定します。w
  2. 周波数、それらがサンプリングされた、および値が与えられると、次のように周波数のパワーをます。wtjXj

Pバツω=12[jバツjcosωtjτ]2jcos2ωtjτ+[jバツjωtjτ]2j2ωtjτ

これはFFTほどうまくスケーリングできないため、必要な周波数の数がすべてのデータを収集するために必要なFFTよりもはるかに少ない場合にのみこれを行います。

それ以外の場合、FFTまたはDFTの補間方法またはその他の再サンプリングを行うことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.