当前位置:   article > 正文

信号去噪——BPD问题求解_bpd算法 matlab

bpd算法 matlab


上一篇: 稀疏入门
下一篇: BP问题求解

问题描述

原始信号为 s ( n ) s(n) s(n),噪声为 w ( n ) w(n) w(n),则采集到的信号可表示为
y ( n ) = s ( n ) + w ( n ) y(n)=s(n)+w(n) y(n)=s(n)+w(n)目标是从含噪信号 y ( n ) y(n) y(n)中恢复出无噪信号 s ( n ) s(n) s(n)

建立模型

假设无噪声信号 s ( n ) s(n) s(n)在某个域具有稀疏表示,即可写成 s = A x s=Ax s=Ax的形式。这里我们假设这个域为频域。
那么,可以将带噪信号可写为: y = A x + w y=Ax+w y=Ax+w其中, A A A M ∗ N M*N MN傅里叶逆变换矩阵,定义如下
在这里插入图片描述
y y y是长度为 M M M的向量, x x x是长度为 N N N的向量, x x x中只有少数位置的值不为零,其余位置都为零。因此,从含噪信号 y ( n ) y(n) y(n)中恢复出无噪信号 s ( n ) s(n) s(n)的问题转化为BPD问题求解。其模型如下:
在这里插入图片描述

求解出 c c c后可得不含噪声的信号 s = A c s=Ac s=Ac

模型求解

BPD问题是L1-范数惩罚项最小二乘问题,通过变量分裂,可把优化问题写成:
在这里插入图片描述

在这里插入图片描述
则优化问题可写成
在这里插入图片描述
对于上述式子,可以采用ALM(augmented Lagrangian method)/MM(method
of multipliers )算法求解。得到迭代算法如下:
在这里插入图片描述
Eckstein和Bertsekas证明,在更一般的情况下,如果上式中的极小化在 x x x u u u之间交替进行,算法仍会收敛到全局最小。这种技术被称为alternating direction method of multipliers (ADMM)。交替对每一个x和u进行最小化,因此我们得到了算法:
在这里插入图片描述
该算法在也被称为SALSA (split augmented Lagrangian shrinkage algorithm)。

问题求解及展示

用MATLAB生成模拟信号如下

M = 100;
N = 256;
m = 0:M-1;
f1 = 0.1;
f2 = 0.22;
y0 = 2*cos(2*pi*f1*m)+sin(2*pi*f2*m);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

添加正态分布 N ( 0 , 1 ) N(0,1) N(0,1)的随机噪声

R = normrnd(0,1,1,M);
y = y0+R;
  • 1
  • 2

在这里插入图片描述
BPD去噪之后的效果如下:
在这里插入图片描述
图片汇总
在这里插入图片描述
在这里插入图片描述

参考文献:
[1].M. V. Afonso, J. M. Bioucas-Dias, and M. A. T. Figueiredo. Fast image recovery using variable splitting and constrained
optimization. IEEE Trans. Image Process., 19(9):2345–2356, September 2010.

[2].J. Eckstein and D. Bertsekas. On the Douglas-Rachford splitting method and the proximal point algorithm for maximal
monotone operators. Math. Program., 5:293–318, 1992.

[3].L1-norm penalized least squares with SALSA. Ivan selesnick.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/407147
推荐阅读
相关标签
  

闽ICP备14008679号