gpt4 book ai didi

signal-processing - 为什么我的卷积结果在使用 FFT 时会发生偏移

转载 作者:行者123 更新时间:2023-12-04 00:08:01 24 4
gpt4 key购买 nike

我正在使用 Radix-2 Cooley-Tukey FFT/FFT-inverse 实现卷积,我的输出是正确的,但在完成时发生了偏移。

我的解决方案是将输入大小和内核大小都归零为 2^m 以获得最小的 m,使用 FFT 转换输入和内核,然后将两个元素相乘并使用 FFT-inverse 将结果转换回来。

作为结果问题的示例:

 0  1  2  3  0  0  0  0
4 5 6 7 0 0 0 0
8 9 10 11 0 0 0 0
12 13 14 15 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 1 0 0
0 0 0 0
0 0 0 0

变成

 0  0  0  0  0  0  0  0
0 0 1 2 3 0 0 0
0 4 5 6 7 0 0 0
0 8 9 10 11 0 0 0
0 12 13 14 15 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

似乎任何大小的输入和内核都会产生相同的移位(1 行和 1 列),但我可能是错的。我使用 this link 的在线计算器执行了相同的计算。 !并得到相同的结果,所以可能是我缺少一些基础知识。我现有的文献没有帮助。所以我的问题是,为什么会发生这种情况?

最佳答案

所以我最终找到了答案为什么会发生这种情况。答案是通过卷积的定义和在那里发生的索引给出的。所以根据定义,sk 的卷积由

给出
(s*k)(x) = sum(s(k)k(x-k),k=-inf,inf)

这个公式“知道”内核的中心,因此我们进行了抽象。将 c 定义为卷积的中心。当x-k = c在总和中时,s(k)就是s(x-c)。因此,包含有趣乘积 s(x-c)k(c) 的总和在索引 x 处结束。换句话说,向右移动 c

关于signal-processing - 为什么我的卷积结果在使用 FFT 时会发生偏移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29746894/

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