广义正交匹配追踪(Generalized OMP, gOMP)算法可以看作为OMP算法的一种推广,由文献[1]提出,第1作者本硕为哈工大毕业,发表此论文时在Korea University攻读博士学位。OMP每次只选择与残差相关最大的一个,而gOMP则是简单地选择最大的S个。之所以这里表述为“简单地选择”是相比于ROMP之类算法的,不进行任何其它处理,只是选择最大的S个而已。
下图为论文中提出的算法伪代码流程:

1 gOMP重构算法流程

参考文献的代码如下所示:

(1)构造K稀疏信号

% Generate K-sparse vector
%
% N : original signal size.
% K : sparsity level
%
% Output parameters
% x_omp : estimated signal
% iter_count: iteration count during estimating
%
% Written by Suhyuk (Seokbeop) Kwon
% Information System Lab., Korea Univ.
% http://isl.korea.ac.kr
function [x x_pos] = islsp_GenSparseVec(N, K)
KPos = K;
if N/2 < K
KPos = N-K;
end
randPos = ceil(N*rand( KPos, 1 ));
randPos = union(randPos,randPos);
leftPOsLen = KPos-length(randPos);
while leftPOsLen > 0
tmpPos = ceil(N*rand( leftPOsLen, 1 ));
randPos = union(tmpPos,randPos);
leftPOsLen = KPos-length(randPos);
end
if KPos < K
randPos = setxor((1:N), randPos);
end
x = zeros( N, 1 );
x(randPos) = randn( K, 1 );
x_pos = randPos;
end

(2)gOMP函数

% Estimate the sparse signal x using generalized OMP
%
% y : observation
% Phi : sensing matrix
% K : sparsity
% S : selection length
%
% Output parameters
% x_omp : estimated signal
% iter_count: iteration count during estimating
%
% Written by Suhyuk (Seokbeop) Kwon
% Information System Lab., Korea Univ.
% http://isl.korea.ac.kr
function [x_ommp iter_count] = islsp_EstgOMP(y, Phi, K, S, zero_threshold)
% Check the parameters
if nargin < 3
error('islsp_EstgOMP : Input arguments y ,Phi and K must be specified.');
end if nargin < 4
S = max(K/4, 1);
end if nargin < 5
zero_threshold = 1e-6;
end
% Initialize the variables
[nRows nCols] = size(Phi);
x_ommp = zeros(size(Phi,2), 1);
residual_prev = y;
supp = [];
iter_count = 0;
while (norm(residual_prev) > zero_threshold && iter_count < K)
iter_count = iter_count+1;
[supp_mag supp_idx] = sort(abs(Phi'*residual_prev), 'descend');
supp_n = union(supp, supp_idx(1:S));
if (length(supp_n) ~= length(supp)) && (length(supp_n) < nRows )
x_hat = Phi(:,supp_n)\y;
residual_prev = y - Phi(:,supp_n)*x_hat;
supp = supp_n;
else
break;
end
end
x_ommp(supp) = Phi(:,supp)\y; if nargout < 2
clear('iter_count');
end
end

(3)测试主函数

% Measurements size
m = 50;
% Signal size
N = 100;
% Sparsity level
K = 20;
% Generate sensing matrix
Phi = randn(m,N)/sqrt(m);
% Generate sparse vector
[x x_pos] = islsp_GenSparseVec(N, K);
y = Phi*x;
% Using default parameters
[x1 itr1] = islsp_EstgOMP(y, Phi, K);
% Find the sparse vector via selecting 4 indices
[x2 itr2] = islsp_EstgOMP(y, Phi, K, 4);
% Find the sparse vector via selecting 4 indices until the residual becomes 1e-12
[x3 itr3] = islsp_EstgOMP(y, Phi, K, 4, 1e-12);
disp('Mean square error');
[mse(x-x1) mse(x-x2) mse(x-x3)]
disp('Iteration number');
[itr1 itr2 itr3]
参考文献:
[1] Jian Wang, Seokbeop Kwon,Byonghyo Shim.  Generalized orthogonal matching pursuit, IEEE Transactions on Signal Processing, vol. 60, no. 12, pp.6202-6216, Dec. 2012.
Available at: http://islab.snu.ac.kr/paper/tsp_gOMP.pdf
[2] http://islab.snu.ac.kr/paper/gOMP.zip

[转]广义正交匹配追踪(gOMP)的更多相关文章

  1. 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)

    主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.gOMP的算法流程 广义正交匹配追踪(Generalized OMP, g ...

  2. 浅谈压缩感知(二十六):压缩感知重构算法之分段弱正交匹配追踪(SWOMP)

    主要内容: SWOMP的算法流程 SWOMP的MATLAB实现 一维信号的实验与结果 门限参数a.测量数M与重构成功概率关系的实验与结果 SWOMP与StOMP性能比较 一.SWOMP的算法流程 分段 ...

  3. 浅谈压缩感知(二十五):压缩感知重构算法之分段正交匹配追踪(StOMP)

    主要内容: StOMP的算法流程 StOMP的MATLAB实现 一维信号的实验与结果 门限参数Ts.测量数M与重构成功概率关系的实验与结果 一.StOMP的算法流程 分段正交匹配追踪(Stagewis ...

  4. [转]压缩感知重构算法之分段正交匹配追踪(StOMP)

    分段正交匹配追踪(StagewiseOMP)或者翻译为逐步正交匹配追踪,它是OMP另一种改进算法,每次迭代可以选择多个原子.此算法的输入参数中没有信号稀疏度K,因此相比于ROMP及CoSaMP有独到的 ...

  5. 浅谈压缩感知(二十二):压缩感知重构算法之正则化正交匹配追踪(ROMP)

    主要内容: ROMP的算法流程 ROMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 一.ROMP的算法流程 正则化正交匹配追踪ROMP算法流程与OMP的最大不同之 ...

  6. 浅谈压缩感知(二十一):压缩感知重构算法之正交匹配追踪(OMP)

    主要内容: OMP的算法流程 OMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.OMP的算法流程 二.OMP的MATL ...

  7. 浅谈压缩感知(九):正交匹配追踪算法OMP

    主要内容: OMP算法介绍 OMP的MATLAB实现 OMP中的数学知识 一.OMP算法介绍 来源:http://blog.csdn.net/scucj/article/details/7467955 ...

  8. opencv实现正交匹配追踪算法OMP

    //dic: 字典矩阵: //signal :待重构信号(一次只能重构一个信号,即一个向量) //min_residual: 最小残差 //sparsity:稀疏度 //coe:重构系数 //atom ...

  9. 压缩感知重构算法之压缩采样匹配追踪(CoSaMP)

    压缩采样匹配追踪(CompressiveSampling MP)是D. Needell继ROMP之后提出的又一个具有较大影响力的重构算法.CoSaMP也是对OMP的一种改进,每次迭代选择多个原子,除了 ...

随机推荐

  1. ASCII流程图

    http://asciiflow.com/ http://www.torchsoft.com/en/aas_information.html

  2. tomcat配置访问项目时不需要加项目名称

    原文:http://blog.csdn.net/coolcoffee168/article/details/52582770 java web部署后,访问项目的时候,需要在地址中添加项目名称,那么如何 ...

  3. &quot;undefined reference to strptime&quot;之自己定义strptime函数

    简单介绍   strptime()函数可以依照特定时间格式将字符串转换为时间类型.简单点说可以将字符串时间转化为时间戳. 这个函数包括在time.h头文件里,在Unix或者类Unix系统中,我们会常常 ...

  4. Windows7系统下优化固态硬盘

    一.AHCI硬盘模式可提高硬盘性能,确定你的固态硬盘是运行在AHCI模式下,打开“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servicesmsahci” ...

  5. Android 项目导入常见错误

    1.SDK版本号不正确应,你能够打开你项目中的project.properties文件,改动target=android-18(我这是18) ,将18改 为14(其它都能够),再改回18会又一次载入. ...

  6. startActivity启动过程分析(转)

    基于Android 6.0的源码剖析, 分析android Activity启动流程,相关源码: frameworks/base/services/core/java/com/android/serv ...

  7. windows内存管理的机制以及优缺点

    分页存储管理基本思想:用户程序的地址空间被划分成若干固定大小的区域,称为“页”,相应地,内存空间分成若干个物理块,页和块的大小相等.可将用户程序的任一页放在内存的任一块中,实现了离散分配. 分段存储管 ...

  8. Eclipse项目遇到问题汇总

    1:gc overhead limit exceeded     原因:这是由于项目中eclipse内存分配不足导致     修改:修改eclipse.ini文件     修改如下:          ...

  9. C项目实践--图书管理系统(2)

    前面在<<C项目实践-图书管理系统(1)>>中把系统中的三大功能模块中可能涉及到的常量,结构体及相关函数进行了声明定义,下来就来实现它们. 执行系统首先从登录到系统开始,所以首 ...

  10. C项目实践之通讯录管理案例

    1.功能需求分析 通讯录管理案例主要实现对联系人的信息进行添加.显示.查找.删除.更新和保存功能.主要功能需求描述如下: (1)系统主控平台: 充许用户选择想要进行的操作,包括添加联系人信息,显示.查 ...