OMP与MP算法流程与代码


本文算法描述主要来自下面书籍的3.1节。
[1] 【以色列】Michael Elad著. 曹铁勇等翻.《稀疏与冗余表示–理论及其在信号与图像处理中的应用》.国防工业出版社. 2015.

1. 算法描述


(1) 任务:近似求解( P 0 P_0 P0)问题: min ⁡ x ∣ ∣ x ∣ ∣ 0   s . t . A x = b \min_{\bf x}||{\bf x}||_0\ {\rm s.t.}{\bf Ax=b} minxx0 s.t.Ax=b
(2) 参数:给定 M × N M\times N M×N维矩阵 A \bf A A N N N维向量 b \bf b b和误差阈值 ϵ 0 \epsilon_0 ϵ0
(3) 初始化:初始设置 k = 0 k=0 k=0,并设置:
  ① 初始解: x 0 = 0 {\bf x}^0={\bf 0} x0=0
  ② 初始残差: r = b \bf r=b r=b
  ③ 初始解的支撑集: S 0 = s u p p o r t { x 0 } = Φ {\mathcal S}^0={\rm support}\{ {\bf x}^0\}=\varPhi S0=support{ x0}=Φ
(4) 主要迭代:每次 k k k加1,并执行下列步骤:
  ① 扫描:对所有的 j j j,计算最优 z j ∗ = a j T r k − 1 / ∣ ∣ a j ∣ ∣ 2 2 z^*_j={\bf a}_j^{\rm T}{\bf r}^{k-1}/||{\bf a_j}||_2^2 zj=ajTrk1/aj22,并得到误差 ϵ ( j ) = min ⁡ z j ∣ ∣ a j z j ∗ − r k − 1 ∣ ∣ 2 2 \epsilon(j)=\min_{z_j}||{\bf a}_jz_j^*-{\bf r}^{k-1}||_2^2 ϵ(j)=minzjajzjrk122【注1】
  ②更新支撑集:确定 ϵ ( j ) \epsilon(j) ϵ(j)取最小值的点 j 0 j_0 j0 ∀ j ∈ S k − 1 \forall j\in {\mathcal S}^{k-1} jSk1 ϵ ( j 0 ) < ϵ ( j ) \epsilon (j_0)<\epsilon(j) ϵ(j0)<ϵ(j),并更新支撑集 S k = S k − 1 ∪ { j 0 } {\mathcal S}^k={\mathcal S}^{k-1}\cup\{j_0\} Sk=Sk1{ j0}

%以上步骤对两种贪婪算法均相同,下面分不同算法描述
%OMP算法:

  ③ 更新临时解:在支撑集 S k = s u p p o r t { x k } {\mathcal S}^k={\rm support}\{ {\bf x}^k\} Sk=support{ xk}条件下,计算使得 ∣ ∣ A x − b ∣ ∣ 2 2 ||{\bf Ax-b}||_2^2 Axb22最小化的值 x k {\bf x}^k

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值