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

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


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

评论

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

#1 楼

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

评论


$ \ begingroup $
非常感谢,我发现了一种我不知道的全新事物。
$ \ endgroup $
–保龄球
2011-12-13 19:50

$ \ begingroup $
@Phonon这些链接有效吗?这到底是什么标志?
$ \ endgroup $
–太空
2012年3月17日下午5:54

$ \ begingroup $
@Mohammad:用于访问Brüel&Kjær技术评论文章和书籍。注册是免费的,并可以访问许多优秀文章。
$ \ endgroup $
–雷神
2012年7月20日在20:20