压缩感知之常用稀疏恢复算法(凸优化算法)及matlab代码


前言

  除了贪婪算法以外,压缩感知重构算法的另一大类就是凸优化算法,这类方法通过将非凸问题转化为凸问题求解找到信号的逼近,在这里给出常用的算法及其matlab代码。


一、基追踪算法(BP)

1、原理概述

  该算法全称为Basis Pursuit,其提出使用 l 1 l_1 l1范数替代 l 0 l_0 l0范数来解决最优化问题,以便使用线性规划方法来求解。即将求解 m i n α ∣ ∣ α ∣ ∣ l 0 \mathop{min}\limits_{\alpha} ||\alpha||_{l_{0}} αminαl0的问题转化为求解 m i n α ∣ ∣ α ∣ ∣ l 1 \mathop{min}\limits_{\alpha} ||\alpha||_{l_{1}} αminαl1的问题,其中 α \alpha α是需要构建出来的原始信号(重构信号)。

2、matlab代码(基于linprog的基追踪MATLAB代码)

function [ alpha ] = BP_linprog( s,Phi )
%BP_linprog(Basis Pursuit with linprog) Summary of this function goes here
%Version: 1.0 written by jbb0523 @2016-07-21 
%Reference:Chen S S, Donoho D L, Saunders M A. Atomic decomposition by
%basis pursuit[J]. SIAM review, 2001, 43(1): 129-159.(Available at: 
%http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.37.4272&rep=rep1&type=pdf)
%   Detailed explanation goes here
%   s = Phi * alpha (alpha is a sparse vector)  
%   Given s & Phi, try to derive alpha
    [s_rows,s_columns] = size(s);  
    if s_rows<s_columns  
        s = s';%s should be a column vector  
    end 
    p = size(Phi,2);
    %according to section 3.1 of the reference
    c = ones(2*p,1);
    A = [Phi,-Phi];
    b = s;
    lb = zeros(2*p,1);
    x0 = linprog(c,[],[],A,b,lb);
    alpha = x0(1:p) - x0(p+1:2*p);
end

给出以下参考网址,有免费的付费的,可则需取用:

免费网址,这里还有对BP算法具体的介绍
https://blog.csdn.net/jbb0523/article/details/51986554?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165087331116781667883165%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165087331116781667883165&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogbaidu_landing_v2~default-1-51986554.nonecase&utm_term=%E5%9F%BA%E8%BF%BD%E8%B8%AA%E7%AE%97%E6%B3%95+matlab&spm=1018.2226.3001.4450
付费的,看评价感觉应该不错
https://download.csdn.net/download/xzf340826/5157738

二、梯度投影法

1、原理概述

  梯度投影法(gradient projection method)利用梯度的投影技巧求约束非线性规划问题最优解的一种方法,求带线性约束的非线性规划问题更为有效。它是从一个基本可行解开始,由约束条件确定出凸约束集边界上梯度的投影,以便求出下次的搜索方向和步长。每次搜索后,都要进行检验,直到满足精度要求为止。具体原理可参考以下网址:

https://baike.baidu.com/item/%E6%A2%AF%E5%BA%A6%E6%8A%95%E5%BD%B1%E6%B3%95/19134105?fr=aladdin

2、matlab代码

代码参考以下网站,免费:

https://www.renrendoc.com/paper/111842292.html


总结

  以上就是今天要讲的内容,欢迎大家在评论区进行交流~

  • 5
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值