Python np.fft.irfft()中的归一化因子是什么?
我正在使用Python np.fft.irfft()中的归一化因子是什么?,python,numpy,fft,Python,Numpy,Fft,我正在使用np.fft.irfft()作为计算Wigner分布程序的一部分。因为我不想要fft的标准化版本,所以我需要标准化因子来“撤销”标准化 np.fft.irfft()的归一化因子是什么?我相信numpy.fft.irfft的范数在数组长度上是1。要看下面的程序: import numpy as np t = np.array([0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
np.fft.irfft()
作为计算Wigner分布程序的一部分。因为我不想要fft的标准化版本,所以我需要标准化因子来“撤销”标准化
np.fft.irfft()的归一化因子是什么?我相信
numpy.fft.irfft
的范数在数组长度上是1。要看下面的程序:
import numpy as np
t = np.array([0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
x = np.fft.irfft(t)
print "Array length: ", len(t), "\t 1/n: ", 1.0/float(len(t)), "\t max x val: ", max(x)
x1 = np.array([0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
t1 = np.fft.rfft(x1)
print "Array length: ", len(t1), "\t 1/n: ", 1.0/float(len(t1)), "\t max t1 val: ", max(t1)
这将产生:
Array length: 128 1/n: 0.0078125 max x val: 0.00787401574803
Array length: 65 1/n: 0.0153846153846 max t1 val: (1+0j)
由此我相信irfft的范数是1/n,而rfft的范数是1。这与此一致(请参阅实现细节)。如果您的答案不在这里:,您可能需要查看源代码,或者设计一些测试用例。逆FFT应该有一个1/N项,它是这样的,并且
x==rfft(irfft(x))
。当您进行正向FFT时,您会得到一个预期的DC项,即输入的总和,如果逆项使您回到原始值,则必须只有1/N“归一化”。您不应该查看x
的总和,而不是最大值吗?