python - IFFT 在 Python 中返回什么?
问题描述
我需要一个复杂数组的傅里叶逆变换。ifft
应该返回一个真正的数组,但它返回另一个复杂的数组。
在 MATLAB 中,
a=ifft(fft(a))
,但在 Python 中它不是那样工作的。
a = np.arange(6)
m = ifft(fft(a))
m # Google says m should = a, but m is complex
输出 :
array([0.+0.00000000e+00j, 1.+3.70074342e-16j, 2.+0.00000000e+00j,
3.-5.68396583e-17j, 4.+0.00000000e+00j, 5.-3.13234683e-16j])
解决方案
虚部是结果浮点数计算误差。如果它非常小,则可以将其丢弃。
Numpy 有内置函数real_if_close
,可以这样做:
>>> np.real_if_close(np.fft.ifft(np.fft.fft(a)))
array([0., 1., 2., 3., 4., 5.])
您可以在此处阅读有关浮动系统限制的信息: https ://docs.python.org/3.8/tutorial/floatingpoint.html
推荐阅读
- python - 使用python将文件上传到共享点时出错
- ruby - 你能支持我在 Ruby 的 while 循环中使用序数吗?
- google-cloud-platform - 为什么我的云运行部署挂在“部署...”步骤?
- javascript - HTML 下载文件按钮仅保存为 HTML 文档
- c# - 什么是 CloudConfigurationManager.GetSetting(
, 错误的);? - r - 导出格式表
- gcc - 如何指示 mingw64-gcc 使用特定的 mingw-w64-headers/crt
- c++ - 虚函数上的 std::is_trivially_copyable_v
- webpack - 错误:在无服务器框架的 lambda 部署问题中找不到模块“/bin”
- java - 如何从“%d %s %f”之类的格式化字符串中获取类类型?在爪哇