来源:面包芯语
(资料图片)
为了展示解卷积, 还是利用前面的正弦信号的卷积作为例子。 这里假设已知 y[n],h[n],求解 x[n]。 为了展示迭代噪声的影响,这里将序列的密度增加, 这是 500 个数据点形成的 x[n] 序列, 将 h[n],y[n]对应的序列的采样密度也增加。 下面应用这些数据进行解卷积。
▲ 图1.2.1 参与解卷积的信号
下面通过 Python 编程, 实现其中的解卷积公式, 从给定的两个序列获得解卷积结果。 这是从 y[n],h[n] 中计算 x[n] 的取值, 可以看到与原来的 sine 波形是一样的, 证明了解卷积公式和子程序的正确性。
▲ 在没有噪声情况下的解卷积
首先在卷积结果上增加正态分布的白噪声, 噪声的方差为 1。 利用卷积公式求 x[n], 可以看到求解出的 x[n] 波形中也增加了白噪声, 方差大约为 1。 将 y[n] 中的噪声方程减小到 0.1, 求解得到的 x[n] 的噪声 也减少了。特别是,这个结果中的噪声似乎并没有随着 n 的增加呈现累积增加的倾向。
▲ 图1.2.3 增加噪声情况下的解卷积
下面在参与求解的 h[n] 中增加噪声, 随机噪声的方差为 0.1, 大约是 h[n] 幅值的 10% 左右。 这是求解之后的 x[n] 的取值, 似乎 x[n] 已经发散了。 这是另一次运行结果, 与前面求解 x[n] 有所不同, 这是第三次运行的结果, x[n] 结果仍然是发散的趋势, 可以看到这种迭代解卷积对于 h[n] 中的噪声比较敏感, 而且每次运行结果还都是不尽相同。 这是在 h[n] 中叠加上 10% 的高斯噪声的测试结果。
▲ 图1.2.4 在 h[n] 上叠加 10% 高斯噪声迭代解卷积的结果
下面将 h[n] 的方程 减小到 0.05。 对 x[n] 进行解卷积, 这是解卷积 30 次形成的结果, 可以看到这种解卷积的结果不是很稳定, 特别是随着 n 增加,后面结果中的误差会累积,直到出现发散。 这个测试验证了这种迭代解卷积的方法在数值上不是很稳定。
▲ 图1.2.5 解卷积结果
本文对于迭代方法求解卷积进行测试, 可以看到在参与卷积数据中存在噪声时, 迭代方法求得结果中的误差会出现累计, 结果也呈现发散的倾向。
标签: