代码如下:
import numpy as np
from numpy import random_intel
import mkl_fft
import matplotlib.pyplot as plt
n = 10**5
a = np.random_intel.rand(n)
b = mkl_fft.fft(a)
plt.scatter(b.real,b.imag)
plt.show()
print(b)
for i in b :
if i.real > n/2:
print("Weird FFT Number is ",i)
结果是:
你可以看到:
Weird FFT Number is (50020.99077289924+0j)
为什么使用随机集的 FFT 会得出一个特定的数字?
(感谢 Paul Panzer 和 SleuthEye)
[2019/03/29更新]
有了归一化数据,一切顺利
b = mkl_fft.fft((a - np.mean(a))/np.std(a))
(a - np.mean(a))/np.std(a)
的平均值接近于零
最佳答案
这是恒定或零频率模式,本质上是信号的平均值。您从单位间隔均匀采样,因此平均值约为 0.5。一些 fft 实现使用点数对其进行缩放以保存乘法。
关于python - 带有 numpy 随机集的奇怪 FFT 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55174208/