合成一维信号的反卷积 - 如何?

信息处理 matlab 卷积 反卷积 逆问题
2022-01-16 19:02:24

我使用线性卷积将方波与高斯波进行卷积。我可以通过用高斯函数对输出进行反卷积来恢复原始方波吗?

我对两个信号进行 FFT,除以,然后用 IFFT 取回方波。我得到的输出看起来像随机噪声。我认为这可能是由于我正在做除法并且某些分母值可能非常低,因此导致此错误。我尝试设置一个阈值并获得如下所示的结果。

在此处输入图像描述

我怎样才能改善结果?

编辑 1:添加用于生成高斯信号的代码。正在使用matlab。

fs      =  200;           % Sampling frequency

t1 = 1/fs : 1/fs : n1/fs; % Where n1 is the length of the square wave signal

s2   =  4*gaussmf(t1, [ 0.4 4.5 ]);   % Generating Gaussian signal

编辑 2:添加用于生成方波的代码。恐怕,这是一个笨拙的代码!

fs      =  200;                           % Sampling Frequency
t       =  1/fs : 1/fs : 3;
n       =  length(t);

sq(1 : round(n/3) )  = eps;                               
sq( (round(n/3) + 1) : 2*round(n/3) ) = 3;
sq( (2*round(n/3) + 1) : n ) = eps;

sq( (3*round(n/3) + 1) : 4*round(n/3) ) = 3;
sq( (4*round(n/3) + 1) : 5*round(n/3) ) = eps;
sq( (5*round(n/3) + 1) : 6*round(n/3) ) = 3;

sq( (6*round(n/3) + 1) : 7*round(n/3) ) = eps;
sq( (7*round(n/3) + 1) : 8*round(n/3) ) = 3;
sq( (8*round(n/3) + 1) : 9*round(n/3) ) = eps;
3个回答

您无法通过反卷积恢复原始信号。

高斯核本质上是一个低通滤波器,即它将从信号中去除较高频率的信息。一旦它消失了,它就消失了,你无法恢复它。

这个问题显示为“除以零”或“除以非常小的数字”,然后将原始卷积的数值噪声放大到大量。

为了恢复原始信号,系统必须“在感兴趣的带宽内具有足够的信噪比”。究竟是什么,在很大程度上取决于您的特定应用程序。

您可以从低架或高架滤波器去卷积,但不能从低通或任何具有阻带或在特定频率处有大量衰减的东西去卷积。

您还会在信号的开头和结尾丢失一些信息。

大多数信息在我1D Deconvolution with Gaussian Kernel (MATLAB)的回答中给出(这与Deconvolution of 1D Signals Blurred by Gaussian Kernel有关)。

模型

最小二乘模型很简单。
作为数据函数的目标函数由下式给出:

f(x)=12hxy22

优化问题由下式给出:

argminxf(x)=argminx12hxy22

其中是要恢复的数据,是模糊内核(在本例中为高斯),是给定测量值的集合。 该模型假设仅对卷积的有效部分给出测量值。即如果那么其中xhy
xRnhRkyRmm=nk+1

这是有限空间中的线性运算,因此可以使用矩阵形式编写:

argminxf(x)=argminx12Hxy22

其中是卷积矩阵。HRm×n

解决方案

最小二乘解由下式给出:

x^=(HTH)1HTy

可以看出,它需要矩阵求逆。
充分解决这个问题的能力取决于运算符的条件数,它服从HTHcond(H)=cond(HTH)

条件数分析

这个条件编号的背后是什么?
可以使用线性代数来回答它。
但在我看来,更直观的方法是在频域中考虑它。

基本上,退化算子通常会衰减高频的能量。
现在,由于在频率上这基本上是元素乘法,有人会说反转它的简单方法是逆滤波器的元素除法。
嗯,就是上面做的。
问题出现在滤波器将能量实际上衰减到零的情况下。然后我们遇到了真正的问题......
这基本上是条件数告诉我们的,一些频率相对于其他频率衰减的程度。

在此处输入图像描述

上面可以看到条件数(使用 [dB] 单位)作为高斯滤波器 STD 参数的函数。
正如预期的那样,STD 越高,条件数越差,因为 STD 越高意味着 LPF 越强(最后下降的值是数值问题)。

由于您的问题基本上是高斯内核的线性组合,因此答案保持不变。

这是一个简单的例子:

在此处输入图像描述

在上面的例子中,重建是完美的。
这是卷积核具有低条件数的结果。
如果您拨打高斯内核 STD,情况会恶化。

该代码可在我的StackExchange Signal Processing Q55284 GitHub 存储库中找到(查看SignalProcessing\Q55284文件夹)。

从具有已知统计信息的信号和滤波器中解卷积的关键字是“维纳滤波器”。基本上,您希望在考虑可用信噪比的情况下最小化重构信号的预期(此处为平方范数)误差。您在这里的“噪音”通常不是浮点错误,而是由于使用 FFT 开窗等导致的系统错误。