不同尺寸1D张量互相关的输入信号零填充实现疑问
互相关计算的核心问题解答
首先纠正认知误区
一维互相关计算本身不需要输入信号和核的尺寸一致。常规的滑动互相关逻辑是让长度为K的核在长度为N的输入信号上逐位平移,每移动到一个有效位置就对重叠区域的元素做乘加运算,不需要对输入做额外处理就能直接完成计算。
以你给出的场景为例:
- 输入信号:
[1,2,3,4,5](长度N=5) - 核:
[6,7](长度K=2)
直接做滑动互相关的计算过程和结果如下:
- 第1位:
1*6 + 2*7 = 20 - 第2位:
2*6 + 3*7 = 33 - 第3位:
3*6 + 4*7 = 46 - 第4位:
4*6 + 5*7 = 59
最终输出结果为[20,33,46,59],长度为N-K+1=4,全程不需要填充操作。
零填充实现等长计算的可行性
如果你确实需要通过「输入和核尺寸一致后再做运算」的逻辑实现互相关(比如用FFT快速计算线性互相关、或者特定场景下的自定义计算要求),是可以通过零填充实现的,对应有两种常见处理逻辑:
- 如果你要实现线性互相关的快速计算,需要把输入和核都补零到长度
N+K-1,再通过FFT点乘后逆变换得到和滑动互相关完全一致的结果 - 如果你只需要做等长的圆周互相关,可以把更短的那一个序列补零到和更长的序列等长即可,你的场景下就是把核补零到长度5,得到
[6,7,0,0,0]后再和输入信号做对应运算。
内容的提问来源于stack exchange,提问作者Black Beard 53
相关产品推荐
相关产品推荐

