実験から合成データを生成しようとしています。正の周波数領域で理論上の PSD を取得し、そこから時系列を計算しました。Cよりもデータを操作し、FFTを実行して周波数領域に適合させます。主な問題を説明するよりも、最初にいくつかのコードを示します。
理論上の PSD を評価するビンは、次の式で与えられるビンです。
bins = np.linspace(1,1e3,2**13)
それから、timeseries を次のように計算します。
for i in range(bins.shape[0]):
signal += dataCOS[i] * np.cos(2*np.pi* t * bins[i] + random.uniform(0,2*np.pi))
ここdataCOS
で、 は PSD と対応するビンの値であり、次のt
式で与えられます。
t_full = np.linspace(0,1,2**13, endpoint = False)
私の問題は、不鮮明にならない時系列の FFT が必要なことです。わかりました、通常は不可能ですが、私が正しく、フレーム内で一致するように時間ビンごとに正確に 1 つの周波数ビンを追加すると(最高周波数と最低周波数はまだ表示されます)、動作するはずです。それで、私の質問は、どのようにビンを持ち、t_full
形を整えるのですか??
ここに私の考えがあります: どちらも同じ量のポイントを持つ必要があり、最高周波数と最低周波数が時間領域から見える必要があります。しかし、よくわかりません。助けていただければ幸いです。
編集 ****************************************** 最初に、私の問題を説明するために添付の写真をもう少し見てください。最初に、時間領域のポイントが多すぎるバックトランスフォーメーションの古典的な結果がありますが、すべてのビンが周期的です。2 番目は同じですが、周期的ではなくなり、期待どおりのスミアが発生します。もちろん、フィルターを使用してここを改善することもできますが、最初の赤の関数に合わせたい場合は、大きな問題が発生します。最後の写真は私が望んでいた結果です。すべての関数は時間枠内で周期的であるため、にじみはありません。第 2 に、t_bin のすべてのペアは、前に追加した 1 つの周波数を正確に保持するため、計算限界の雲は消えます。
それを得るために、必要なビンと t の間隔は次のとおりです。
bins = np.linspace(0,2**14,2**14, endpoint = False)
t_full = np.linspace(0,1,2*bins.shape[0], endpoint = False)