gpt4 book ai didi

python - 通过 numpy FFT 进行数值微分

转载 作者:行者123 更新时间:2023-11-30 22:23:07 25 4
gpt4 key购买 nike

我正在学习如何使用 numpy 进行快速傅立叶变换微分。在下面的代码中,我创建了一个简单的正弦函数并尝试获取余弦。结果如图所示,尽管阅读了文档,但似乎存在一个我不理解的标准化因素,这使我无法获得正确的结果。

你能告诉我如何摆脱标准化因素或者我是否以不同的方式失败了?另请解释为什么当数组长度为奇数时奈奎斯特频率不存在。

x = np.arange(start=-300., stop=300.1, step=0.1)
sine = np.sin(x)

Y = np.fft.rfft(a=sine, n=len(x))
L = 2.*np.pi #period
N = size(Y)

for k, y in enumerate(Y):
Y[k] *= 2.*np.pi*1j*k/L

# if N is even, the last entry is the Nyquist frequency.
#if N is odd, there it is not there.
if N%2 == 0:
Y[-1] *= 0.

cosine = np.fft.irfft(a=Y, n=len(x))

Code output

最佳答案

Can you tell me how to get rid of the normalization factor or if I am failing in a different way?

为术语2.*np.pi*1j*k/L添加np.exp()。这一项好像是相位旋转量,所以它们的范数应该是1。

for k in range(N):
Y[k] *= np.exp(2.*np.pi*1j*k/L)

Also please explain why the Nyquist frequency is not present when the array is length is odd.

这是离散傅立叶变换的本质。简而言之,当采样点数N为奇数时,不存在等于N/2的整数。

关于python - 通过 numpy FFT 进行数值微分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48133518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com