首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy ifft错误

Numpy ifft错误
EN

Stack Overflow用户
提问于 2015-10-04 11:25:33
回答 1查看 499关注 0票数 1

我在使用numpy的反快速傅立叶变换函数时遇到了一个非常令人沮丧的问题。根据我的其他结果,我知道fft函数工作得很好。调用ifft后似乎引入了错误。以下代码应打印为零,例如:

代码语言:javascript
复制
temp = Eta[50:55] 
print(temp) 
print(temp-np.fft.fft(np.fft.ifft(temp)))

输出:

代码语言:javascript
复制
[ -4.70429130e+13 -3.15161484e+12j -2.45515846e+13 +5.43230842e+12j -2.96326088e+13 -4.55029496e+12j 2.99158889e+13 -3.00718375e+13j -3.87978563e+13 +9.98287428e+12j]

[ 0.00781250+0.00390625j -0.02734375+0.01757812j 0.05078125-0.02441406j 0.01171875-0.01171875j -0.01562500+0.015625j ]

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2015-10-04 12:11:08

您看到的是正常的浮点不精确度。这是我从你的数据中得到的:

代码语言:javascript
复制
In [58]: temp = np.array([ -4.70429130e+13 -3.15161484e+12j, -2.45515846e+13 +5.43230842e+12j, -2.96326088e+13 -4.55029496e+12j, 2.99158889e+13 -3.00718375e+13j, -3.87978563e+13 +9.98287428e+12j])

In [59]: delta = temp - np.fft.fft(np.fft.ifft(temp))

In [60]: delta
Out[60]: 
array([ 0.0000000+0.00390625j, -0.0312500+0.01953125j,
        0.0390625-0.02539062j,  0.0078125-0.015625j  , -0.0156250+0.015625j  ])

相对于输入,这些值实际上是“小”的,并且对于64位浮点计算是合理的:

代码语言:javascript
复制
In [61]: np.abs(delta)/np.abs(temp)
Out[61]: 
array([  8.28501685e-17,   1.46553699e-15,   1.55401584e-15,
         4.11837758e-16,   5.51577805e-16])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32929725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档