如何在频域中找到卷积核?

信息处理 matlab 卷积
2022-01-05 05:59:12

我有两个空间数据向量(每个向量长度约为 2000 个元素)。一个是另一个的卷积版本。我正在尝试确定会产生这种卷积的内核。我知道我可以通过找到输出和输入向量的傅里叶变换比率的傅里叶逆变换来做到这一点。事实上,当我这样做时,我或多或少地得到了我所期望的形状。然而,我的核向量与两个输入向量具有相同的维度,而实际上卷积只使用了大约五分之一(~300-400)的点。我得到了正确的形状但点数错误的事实使我认为我没有完全正确地使用 ifft 和 fft 函数。似乎如果我真的在做正确的事情,这应该自然而然地发生。目前我只是在做;

FTInput = fft(in); 
FtOutput = fft(out);
kernel = ifft(FtOutput./FTInput).

这是正确的,是我正确解释输出向量还是我过度简化了任务?我确定是后者,我只是不确定在哪里。

1个回答

如果信号中存在噪声,直接的傅立叶域划分将导致结果出现大量错误。避免它的一些方法是使用所谓的双通道 FFT(第 1部分和第 2 部分)。我还可以建议通过自适应滤波器进行反卷积,特别是LMS 或 NLMS([归一化] 最小均方)滤波器很容易理解,如果你的信号很长,就 CPU 周期而言并不是非常昂贵。LMS 自适应滤波器对噪声非常鲁棒。