python - 使用 fftconvolve 的数值积分错误
问题描述
我的代码中有一些持续传播的数字错误,这与 Python 中卷积的实现有关;这让我的进步有点挣扎,我真的很感激这里的一些建议。
问题:我想使用快速傅里叶变换算法对两个(复杂)信号 $f,g$ 的卷积积分进行数值计算,所以我使用scipy.signal.fftconvolve
. 这两个信号定义在等距点“x”的网格上,它们的实部和虚部如下所示:
其中蓝线对应$f[x]$,虚线对应$g[x]$,第一个数字代表实部。问题是我想得到 y[x] = ( f*g )[x] 以便在与 f 和 g 完全相同的 x 网格点处对积分产生的函数 $y[x]$ 进行评估。然后我正在使用:
y = dx*scipy.signal.fftconvolve( f, g, mode="same" )
我得到以下信息:
$y[x]$ 的实部为蓝色,橙色为虚部。如果我理解正确,使用mode="same"
onfftconvolve
应该精确地提供原始点 x 网格上的卷积积分值。
问题与边缘有关。在我看来,由于零填充或此处类似的东西,这些值是某种错误。函数 f 和 g 应该在无穷大处衰减到 0(实际上,f 应该衰减到 0,而 g 到一个常数值),但是 f 和 g 的支持似乎比使用的网格大得多这种整合。分析上,积分的范围是无限的(积分的极限是-+无穷大),但在这里,$x$ 的最大值作为积分的极限。结果,此错误在我的代码中传播,导致边缘解决方案的不稳定。任何人都可以就如何解决这些问题提供一些建议或方法吗?
解决方案
推荐阅读
- node.js - 是否可以检查 heroku 构建日志中列出的日志文件?
- android - 日志中没有错误但 RecyclerView 没有显示任何 JSON 值-代码中也没有错误---Volley
- sapui5 - 如何推迟触发格式化程序
- java - 没有“org.springframework.security.authentication.AuthenticationProvider”类型的合格bean
- c# - 在 DataGridView 中从 Access 数据库中读取数据
- python - 如何从该列中仅提取数字?
- python - 许多 pytest 固定装置与一个大型“容器”固定装置
- rust - 通过 `core` 而不是 `std` 引用模块有什么缺点吗?
- c++ - 在对象数组上调用 delete[] 会无缘无故地破坏堆
- php - 如何在 preg_replace 中保留数字和特殊字符