我正在实现一个算法,我需要计算两个一维向量之间的线性卷积和互相关a并b使用 FFT。如果aism的长度和 的长度b是n,那么得到的卷积的总长度将为m + n - 1。
但是,该算法要求卷积的输出与输入的长度相同。由于m = n,输入向量的长度相同。
在 Matlab 中,假设两个向量都被零填充到 length m + n - 1,卷积计算为:
ifft(fft(a).*fft(b))
或者,两个向量之间的互相关计算如下:
fftshift(ifft(fft(a).*conj(fft(b))))
输出是长度m + n - 1。我需要对向量进行零填充,以确保在使用 FFT 时不会发生循环卷积。
但是,我希望输出长度与输入长度相同。一个相关的问题(也在 stackoverflow 上)显示了如何修剪两个图像的相关性。
如何修剪一维输出向量,使其与输入向量的长度相同?