6

これはおそらく非常に素朴な質問ですが、ここにあります。

関数 f(x) のフーリエ変換を計算したい。そこで、numpy 配列 X を定義し、ベクトル化された関数 f を渡します。ここで、この配列 f(X) の FFT を計算すると、紙の上で行う場合のように f(x) のフーリエ変換にはなりません。たとえば、Gaussian の FFT を計算すると、Gaussian、または実部が Gaussian に非常によく似た配列を取得する必要があります。

これがコードです。通常のフーリエ変換を取得するには、何を変更する必要があるか教えてください。

import matplotlib.pyplot as plt
import numpy as np

N = 128
x = np.linspace(-5, 5, N)
y = np.exp(-x**2)

y_fft = np.fft.fftshift(np.fft.fft(y).real)
plt.plot(x, y_fft)

plt.show()

繰り返します。任意の関数 (ガウスなど) のフーリエ変換を計算したい。FFT は数値の配列のフーリエ変換を計算する方法ですが、これは連続フーリエ変換式の単純な離散化と同じではありません。

4

2 に答える 2

7

いいえ、FFT は関数のフーリエ変換 (FT) を計算する方法ではありません。FFT は、サンプルの配列の離散フーリエ変換である DFT を計算する高速アルゴリズムです。このサンプルの配列は、等間隔のポイントでの関数のサンプリングとして解釈できます。

DFT と FT は 2 つの異なるものであり、DFT を使用して FT を計算することはできません。それらの違いについては、このリンクを参照してください。

関数が周期的である場合、そのスペクトルはポイントでのみ定義された関数であり、ドメインとサンプリング レートを非常に慎重に選択すれば、関数の等間隔サンプルで DFT を使用して FT をうまく推論できます。ドメインは、関数のすべての高調波のすべての周期の倍数です。

于 2014-05-16T18:00:11.107 に答える
3

ここであなたの質問に答えたと思います。(上記のリンクで自分で質問して回答する前に、あなたの質問を見ていませんでした)

于 2014-06-06T09:29:13.127 に答える