x次のような波形がある場合
x = [math.sin(W*t + Ph) for t in range(16)]
任意Wの とPhで、その (実数) FFTfを で計算します
f = numpy.fft.rfft(x)
でオリジナルxを取得できます
numpy.fft.irfft(f)
ここで、復元された波形の範囲をサンプル数だけ左右に拡張する必要がある場合はどうすればよいでしょうか? つまり、 、、が元の波形の周期的な延長であるyような波形です。len(y) == 48y[16:32] == xy[0:16], y[32:48]
言い換えれば、FFT がその入力が でf(t)サンプリングされた無限関数であると想定している場合t = 0, 1, ... N-1、どうすればforとの値を回復できますか?f(t)t<0t>=N
注:例として完全な正弦波を使用しましたが、実際には、 やxなどの任意の信号、またはランダム ファイルから取得した任意の長さのセグメントなど、何でもかまいx = range(16)ませんx = np.random.rand(16)。.wav