【发布时间】:2020-07-24 03:17:05
【问题描述】:
我在使用 numpy fft 类时遇到了一个奇怪的问题。我有以下测试代码:
import numpy as np
import scipy.io.wavfile
import matplotlib.pyplot as plt
fs, a = scipy.io.wavfile.read('test.wav') # import audio file
spectrum = np.fft.fft(a) # create spectrum
b = np.real(np.fft.ifft(spectrum)) # reconstruct signal
# Print power of original and output signal
print(np.average(a**2))
print(np.average(b**2))
它输出:
1497.887578558565
4397203.934254291
正如对这些值的预期,输出比输入响亮得多。 numpy.fft.ifft 的文档说明:
“此函数计算 fft 计算的一维 n 点离散傅里叶变换的逆。换句话说,ifft(fft(a)) == a 在数值精度范围内。”
因此信号应该几乎相同。然而他们显然不是。 我在这里做错了什么?
【问题讨论】:
标签: python-3.x numpy signal-processing fft