浅谈压缩感知(二十三):压缩感知重构算法之压缩采样匹配追踪(CoSaMP)
主要内容:
- CoSaMP的算法流程
- CoSaMP的MATLAB实现
- 一维信号的实验与结果
- 测量数M与重构成功概率关系的实验与结果
一、CoSaMP的算法流程
压缩采样匹配追踪(CompressiveSampling MP)是D. Needell继ROMP之后提出的又一个具有较大影响力的重构算法。CoSaMP也是对OMP的一种改进,每次迭代选择多个原子,除了原子的选择标准之外,它有一点不同于ROMP:ROMP每次迭代已经选择的原子会一直保留,而CoSaMP每次迭代选择的原子在下次迭代中可能会被抛弃。



二、CS_CoSaMP的MATLAB实现(CS_CoSaMP.m)
function [ theta ] = CS_CoSaMP( y,A,K )
% CS_CoSaOMP
% Detailed explanation goes here
% y = Phi * x
% x = Psi * theta
% y = Phi*Psi * theta
% 令 A = Phi*Psi, 则y=A*theta
% K is the sparsity level
% 现在已知y和A,求theta
% Reference:Needell D,Tropp J A.CoSaMP:Iterative signal recovery from
% incomplete and inaccurate samples[J].Applied and Computation Harmonic
% Analysis,,:-.
[m,n] = size(y);
if m<n
y = y'; %y should be a column vector
end
[M,N] = size(A); %传感矩阵A为M*N矩阵
theta = zeros(N,); %用来存储恢复的theta(列向量)
pos_num = []; %用来迭代过程中存储A被选择的列序号
res = y; %初始化残差(residual)为y
for kk=:K %最多迭代K次
%() Identification
product = A'*res; %传感矩阵A各列与残差的内积
[val,pos]=sort(abs(product),'descend');
Js = pos(:*K); %选出内积值最大的2K列
%() Support Merger
Is = union(pos_num,Js); %Pos_theta与Js并集
%() Estimation
%At的行数要大于列数,此为最小二乘的基础(列线性无关)
if length(Is)<=M
At = A(:,Is); %将A的这几列组成矩阵At
else %At的列数大于行数,列必为线性相关的,At'*At将不可逆
if kk ==
theta_ls = ;
end
break; %跳出for循环
end
%y=At*theta,以下求theta的最小二乘解(Least Square)
theta_ls = (At'*At)^(-1)*At'*y; %最小二乘解
%() Pruning
[val,pos]=sort(abs(theta_ls),'descend');
%() Sample Update
pos_num = Is(pos(:K));
theta_ls = theta_ls(pos(:K));
%At(:,pos(:K))*theta_ls是y在At(:,pos(:K))列空间上的正交投影
res = y - At(:,pos(:K))*theta_ls; %更新残差
if norm(res)<1e- %Repeat the steps until r=
break; %跳出for循环
end
end
theta(pos_num)=theta_ls; %恢复出的theta
end
三、一维信号的实验与结果
%压缩感知重构算法测试
clear all;close all;clc;
M = ; %观测值个数
N = ; %信号x的长度
K = ; %信号x的稀疏度
Index_K = randperm(N);
x = zeros(N,);
x(Index_K(:K)) = *randn(K,); %x为K稀疏的,且位置是随机的
Psi = eye(N); %x本身是稀疏的,定义稀疏矩阵为单位阵x=Psi*theta
Phi = randn(M,N); %测量矩阵为高斯矩阵
A = Phi * Psi; %传感矩阵
y = Phi * x; %得到观测向量y %% 恢复重构信号x
tic
theta = CS_CoSaMP( y,A,K );
x_r = Psi * theta; % x=Psi * theta
toc %% 绘图
figure;
plot(x_r,'k.-'); %绘出x的恢复信号
hold on;
plot(x,'r'); %绘出原信号x
hold off;
legend('Recovery','Original')
fprintf('\n恢复残差:');
norm(x_r-x) %恢复残差

四、测量数M与重构成功概率关系的实验与结果
clear all;close all;clc; %% 参数配置初始化
CNT = ; %对于每组(K,M,N),重复迭代次数
N = ; %信号x的长度
Psi = eye(N); %x本身是稀疏的,定义稀疏矩阵为单位阵x=Psi*theta
K_set = [,,,,]; %信号x的稀疏度集合
Percentage = zeros(length(K_set),N); %存储恢复成功概率 %% 主循环,遍历每组(K,M,N)
tic
for kk = :length(K_set)
K = K_set(kk); %本次稀疏度
M_set = *K::N; %M没必要全部遍历,每隔5测试一个就可以了
PercentageK = zeros(,length(M_set)); %存储此稀疏度K下不同M的恢复成功概率
for mm = :length(M_set)
M = M_set(mm); %本次观测值个数
fprintf('K=%d,M=%d\n',K,M);
P = ;
for cnt = :CNT %每个观测值个数均运行CNT次
Index_K = randperm(N);
x = zeros(N,);
x(Index_K(:K)) = *randn(K,); %x为K稀疏的,且位置是随机的
Phi = randn(M,N)/sqrt(M); %测量矩阵为高斯矩阵
A = Phi * Psi; %传感矩阵
y = Phi * x; %得到观测向量y
theta = CS_CoSaMP(y,A,K); %恢复重构信号theta
x_r = Psi * theta; % x=Psi * theta
if norm(x_r-x)<1e- %如果残差小于1e-6则认为恢复成功
P = P + ;
end
end
PercentageK(mm) = P/CNT*; %计算恢复概率
end
Percentage(kk,:length(M_set)) = PercentageK;
end
toc
save CoSaMPMtoPercentage1000 %运行一次不容易,把变量全部存储下来 %% 绘图
S = ['-ks';'-ko';'-kd';'-kv';'-k*'];
figure;
for kk = :length(K_set)
K = K_set(kk);
M_set = *K::N;
L_Mset = length(M_set);
plot(M_set,Percentage(kk,:L_Mset),S(kk,:));%绘出x的恢复信号
hold on;
end
hold off;
xlim([ ]);
legend('K=4','K=12','K=20','K=28','K=36');
xlabel('Number of measurements(M)');
ylabel('Percentage recovered');
title('Percentage of input signals recovered correctly(N=256)(Gaussian)');

五、参考文章
http://blog.csdn.net/jbb0523/article/details/45441361
浅谈压缩感知(二十三):压缩感知重构算法之压缩采样匹配追踪(CoSaMP)的更多相关文章
- [转]压缩感知重构算法之分段正交匹配追踪(StOMP)
分段正交匹配追踪(StagewiseOMP)或者翻译为逐步正交匹配追踪,它是OMP另一种改进算法,每次迭代可以选择多个原子.此算法的输入参数中没有信号稀疏度K,因此相比于ROMP及CoSaMP有独到的 ...
- 浅谈压缩感知(二十八):压缩感知重构算法之广义正交匹配追踪(gOMP)
主要内容: gOMP的算法流程 gOMP的MATLAB实现 一维信号的实验与结果 稀疏度K与重构成功概率关系的实验与结果 一.gOMP的算法流程 广义正交匹配追踪(Generalized OMP, g ...
- 浅谈压缩感知(二十五):压缩感知重构算法之分段正交匹配追踪(StOMP)
主要内容: StOMP的算法流程 StOMP的MATLAB实现 一维信号的实验与结果 门限参数Ts.测量数M与重构成功概率关系的实验与结果 一.StOMP的算法流程 分段正交匹配追踪(Stagewis ...
- 浅谈压缩感知(二十二):压缩感知重构算法之正则化正交匹配追踪(ROMP)
主要内容: ROMP的算法流程 ROMP的MATLAB实现 一维信号的实验与结果 测量数M与重构成功概率关系的实验与结果 一.ROMP的算法流程 正则化正交匹配追踪ROMP算法流程与OMP的最大不同之 ...
- 压缩感知重构算法之压缩采样匹配追踪(CoSaMP)
压缩采样匹配追踪(CompressiveSampling MP)是D. Needell继ROMP之后提出的又一个具有较大影响力的重构算法.CoSaMP也是对OMP的一种改进,每次迭代选择多个原子,除了 ...
- 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云 ...
- 浅谈Kotlin(二):基本类型、基本语法、代码风格
浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 浅谈Kotlin(三):类 浅谈Kotlin(四):控制流 通过上面的文章,在A ...
- 浅谈Java代理二:Cglib动态代理-MethodInterceptor
浅谈Java代理二:Cglib动态代理-MethodInterceptor CGLib动态代理特点: 使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生 ...
- 【沥血整理】灰度(二值)图像重构算法及其应用(morphological reconstruction)。
不记得是怎么接触并最终研究这个课题的了,认识我的人都知道我是没有固定的研究对象的,一切看运气和当时的兴趣.本来研究完了就放在那里了,一直比较懒的去做总结,但是想一想似乎在网络上就没有看到关于这个方面的 ...
随机推荐
- hdu4768二分答案
/* 如果发的传单是偶数,那么所有人都收到双数张. 仅考虑发了单数张传单,二分答案x,如果x左边是偶数,那么答案在右侧,如果x左边是奇数,那么答案在左侧 */ #include<iostream ...
- 步步为营-23-通过GridView实现增删改
说明:把xml中的数据放入到数据源list中然后显示到gridview中,参考上一节内容 1 UI页面 2创建student类 public class Student { public int ID ...
- RabbitMQ(一):RabbitMQ 安装与配置(Mac)
一.rabbitmq 安装与配置 安装: brew install rabbitmq # 进入安装目录 cd /usr/local/Cellar/rabbitmq/3.7.12 # 启动 brew s ...
- Nginx 响应状态
ngx.status = ngx.HTTP_CONTINUE (100) (first added in the v0.9.20 release)ngx.status = ngx.HTTP_SWITC ...
- centos7网卡名修改
centos7网卡名不是以etho的方式命名,有时候在自动化方面不便于管理,在安装的时候输入如下代码即可命名: net.ifnames=0 biosdevname=0
- asp.net core session的使用
Session介绍 本文假设读者已经了解Session的概念和作用,并且在传统的.net framework平台上使用过. Asp.net core 1.0好像需要单独安装,在nuget控制台,选择你 ...
- gitbook editor教程
用户首先需要安装 nodejs,以便能够使用 npm 来安装 gitbook.所以我们先安装node.js,安装过程很简单,都是不断按下「Next」按钮就可以了 写node -h可以看看是否安装成功 ...
- 高德地图web端笔记;发送http请求的工具类
1.查询所有电子围栏 package com.skjd.util; import java.io.BufferedReader; import java.io.InputStream; import ...
- 6-16 单词 uva10129
了解了欧拉回路和欧拉道路的性质 : 欧拉道路 最多只有两个奇点(不可能只有一个奇点) 并且当有两个奇点的时候 一个奇点入比出多一 一个奇点出比入多一 采用并查集查看是否连同 如果连 ...
- 【Java】 剑指offer(27) 二叉树的镜像
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 请完成一个函数,输入一个二叉树,该函数输出它的镜像. 思路 画图可 ...