执行反卷积

信息处理 matlab 信号分析 反卷积
2022-02-10 18:19:15

所以我有以下数据:

[[-344    13771   4600 ]
 [-275.2  12478   6410 ]
 [-206.4  19443    830 ]
 [-137.6  69392   3830 ]
 [ -68.8  143737  3780 ]
 [   0    189278 16870 ]
 [  68.8  184486  5090 ]
 [ 137.6  188466  9380 ]
 [ 206.4  185023 21680 ]
 [ 275.2  128133  1460 ]
 [ 344    51288   1950 ]
 [ 412.8  10854   4290 ]]

第一列是 x 值(以微米为单位的位置)。第二个值是记录的数据点(y),第三列是误差(噪声)。

我想知道如果我记录的数据已知是响应的卷积和宽度为 83.6666(加上噪声)的狭缝,我如何找到设备的响应。

我的尝试是使用傅立叶变换的卷积定理并使用 MatLabfft()求解所需的函数,但我无法弄清楚如何使所有内容都具有相同的长度。我也想过要直率和使用deconv(),但这给了我一些非常奇怪的东西,(我的 rect 函数定义为

>> x=-344:1:412;
>> h=zeros(size(x));
>> h(300:386)=1;

所以我使用deconv(h,y)并得到了一个看起来很奇怪的情节,它不是一个函数。

所以我希望有人能给我一些关于如何在数学上执行此操作的建议(代码或无代码)。尤其是加上噪音。

谢谢!

2个回答

en.wikipedia.org/wiki/Wiener_filter

您正在寻找的是一个 Weiner 过滤器,它考虑了数据的标准偏差。请参阅http://www.astroml.org/book_figures/chapter10/fig_wiener_filter.html 和 Wikipedia 中的描述以了解实施。基本上你会按照你的建议去做,但是在 fft 的比率的分母中有一个额外的术语,即噪声的 fft。

您要处理的函数具有不同的采样率。测量数据每 68.8 微米采样一次,狭缝数据每 1 微米采样一次。因此,您必须将狭缝数据下采样到相同的采样率,甚至更好地对测量数据进行上采样,以防止信息丢失。然后两个信号将具有相同的长度,反卷积应该如下所示:

ifft(fft(y)./fft(h))