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

本文详细介绍了压缩感知中的正交匹配追踪(OMP)算法,包括算法流程、MATLAB实现、一维信号的实验结果以及测量数M和稀疏度K对重构成功率的影响。通过实例和实验数据,展示了OMP在信号重构中的应用。
摘要由CSDN通过智能技术生成

主要内容:

  1. OMP的算法流程
  2. OMP的MATLAB实现
  3. 一维信号的实验与结果
  4. 测量数M与重构成功概率关系的实验与结果
  5. 稀疏度K与重构成功概率关系的实验与结果

一、OMP的算法流程

二、OMP的MATLAB实现(CS_OMP.m)

function [ theta ] = CS_OMP( y,A,iter )
%   CS_OMP
%   y = Phi * x
%   x = Psi * theta
%    y = Phi * Psi * theta
%   令 A = Phi*Psi, 则y=A*theta
%   现在已知y和A,求theta
%   iter = 迭代次数 
    [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,1); %用来存储恢复的theta(列向量)
    At = zeros(M,iter); %用来迭代过程中存储A被选择的列
    pos_num = zeros(1,iter); %用来迭代过程中存储A被选择的列序号
    res = y; %初始化残差(residual)为y
    for ii=1:iter %迭代t次,t为输入参数
        product = A'*res; %传感矩阵A各列与残差的内积
        [val,pos] = max(abs(product)); %找到最大内积绝对值,即与残差最相关的列
        At(:,ii) = A(:,pos); %存储这一列
        pos_num(ii) = pos; %存储这一列的序号
        A(:,pos) = zeros(M,1); %清零A的这一列,其实此行可以不要,因为它与残差正交
        % y=At(:,1:ii)*theta,以下求theta的最小二乘解(Least Square)
        theta_ls = (At(:,1:ii)'*At(:,1:ii))^(-1)*At(:,1:ii)'*y;%最小二乘解
        % At(:,1:ii)*theta_ls是y在At(:,1:ii)列空间上的正交投影
        res = y - At(:,1:ii)*theta_ls; %更新残差        
    end
    theta(pos_num)=theta_ls;% 恢复出的theta
end

三、一维信号的实验与结果(CS_Reconstuction_Test.m

%压缩感知重构算法OMP测试
%以一维信号为例
clear all;close all;clc;
M = 64;%观测值个数
N = 256;%信号x的长度
K = 10;%信号x的稀疏度
Index_K =
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值