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


12

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

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

这是正确的吗?要由我来正确解释输出向量,还是我简化了任务?我敢肯定是后者,我只是不确定在哪里。


2
您的输入数据是否在卷积内核的长度两侧都进行了零填充?应该是这样,否则您在那里丢失了信息,这可能是造成这些工件的原因。
左右左转

Answers:


5

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


谢谢,我发现了一种我不知道的全新事物。
Bowler

@Phonon这些链接有效吗?这到底是什么标志?
Spacey 2012年

@Mohammad:用于访问Brüel&Kjær技术评论文章和书籍。注册是免费的,并可以访问许多优秀文章。
2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.