精华内容
下载资源
问答
  • 正交匹配追踪算法

    2013-01-24 12:33:39
    正交匹配追踪算法,仿真得出源信号浴场够信号的关系
  • 正交匹配追踪算法(OMP)是一种贪婪的压缩感知恢复算法,它在每次迭代中选择感知矩阵的最佳拟合列。 然后在由所有先前选择的列跨越的子空间中执行最小二乘 (LS) 优化。 这种方法不如 Basis 追踪算法准确,但计算...
  • matlab正交匹配追踪算法
  • 使用正交匹配追踪算法的语音增强
  • 压缩传感正交匹配追踪算法,代码很简单,恢复效果不错
  • 匹配追踪MP、正交匹配追踪算法OMP,稀疏表示里的基本算法
  • 压缩感知的正交匹配追踪算法——matlab程序 压缩感知的正交匹配追踪算法——matlab程序
  • 压缩感知正交匹配追踪算法,在MATLAB中的程序。本人已经调试 完毕
  • 正交匹配追踪算法OMP(Orthogonal Matching Pursuit),压缩感知的一种典型贪婪算法,该资源给出了OMP的MATLAB的仿真代码
  • 在块正交匹配追踪算法中,候选集匹配原子块的选择策略对信号重建具有重要作用,但是该算法在迭代选择原子块的过程中,每次选择当次最优迭代的原子块,并不能保证最终迭代性能是最优的。为此,提出一个基于前向预测的最优...
  • omp(正交匹配追踪算法、MATLAB编写)
  • 机器学习——回归算法之正交匹配追踪算法(Orthogonal Matching Pursuit,OMP)前言匹配追踪算法(Matching Pursuit,MP)1、算法思想2、算法过程3、MP算法的问题正交匹配追踪算法(Orthogonal Matching Pursuit,OMP)1、...

    前言

    学习正交匹配追踪算法之前需要看懂匹配追踪算法(MP),显然OMP是在MP的基础上添加一个正交约束,具体是怎样的请往下看。一定要明白稀疏分解和压缩感知的区别和联系

    匹配追踪算法(Matching Pursuit,MP)

    1、算法思想

    MP算法的基本思想:从原始数据集X(也称为过完备原子库中),选择一个与信号 y(标签) 最匹配的原子(也就是某些列),构建一个稀疏逼近,并求出信号残差,然后继续选择与信号残差最匹配的原子,反复迭代,信号y可以由这些原子的线性和,再加上最后的残差值来表示。很显然,如果残差值在可以忽略的范围内(迭代停止条件),则信号y就是这些原子的线性组合。

    2、算法过程

    假设原始数据集有n个样本X={x1,x2,..,xn}X= \{x_{1},x_{2},..,x_{n}\},并且每个样本属性已经归一化xi=1||x_{i}||=1
    在每一次迭代时,都要计算:
    f=fk+Rkff=f_{k}+R_{k}f
    其中fkRkff_{k}表示当前近似,R_{k}f表示当前的残差(下面的算法流程中有计算公式)
    算法具体过程:

    1. 初始化参数:k=1,f0=0,R0f=f=xi,xik =1,f_{0}=0,R_{0}f=f=x_{i},其中x_{i}表示随机在原经归一化后的数据集中选择一个样本
    2. 计算内积{Rkf,xn}n\{\left \langle R_{k}f,x_{n} \right \rangle\}_{n}
    3. 按照下式选择下一个样本(即从剩下的样本中选择大于上一次所选样本的所有内积的样本):
    4. Rkf,xnk+1 αsupjRkf,xj ,0<α1\left\|\left \langle R_{k}f,x_{n_{k+1}} \right \rangle\ \right\|\geq \alpha \underset{j}{sup}\left\|\left \langle R_{k}f,x_{j} \right \rangle\ \right\|,0<\alpha \leq 1
    5. 更新参数:fk+1=fk+Rkf,xnk+1xnk+1f_{k+1} =f_{k}+ \left \langle R_{k}f,x_{n_{k+1}} \right \rangle x_{n_{k+1}}
      Rk+1f=RkfRkf,xnk+1xnk+1R_{k+1}f = R_{k}f-\left \langle R_{k}f,x_{n_{k+1}} \right \rangle x_{n_{k+1}}
    6. k=k+1,循环迭代2~5,直到残差满足一定阈值为止。

    3、MP算法的问题

    在描述MP算法时,有类似这样的话:在匹配追踪(MP)中,字典原子不是相互正交的向量。因此上面减去投影计算残差的过程中会再次引入与前面使用的原子不正交的成分。或者是:信号(残值)在已选择的原子进行垂直投影是非正交性的,这会使得每次迭代的结果并不是最优的而是次最优的,收敛需要很多次迭代。
    j解决办法:简要概括就是我们是在找字典中的一组基进行线性组合后来作为f的最接近表示,每次的残差也就是Rkf会和f在当前所选择的基xk上的正交投影垂直,上式中的 fk是多个选择后的基的线性组合,不和残差项垂直。也就是下面OMP算法使用的正交。

    正交匹配追踪算法(Orthogonal Matching Pursuit,OMP)

    1、算法思想

    在正交匹配追踪OMP中,残差是总与已经选择过的原子正交的。这意味着一个原子不会被选择两次,结果会在有限的几步收敛。

    2、算法流程

    1. 用x表示初始样本,初始化残差e0=x;
    2. 在剩余的样本中选择与e0内积绝对值最大的原子,表示为φ1;
    3. 将选择的原子作为列组成矩阵Φt,定义Φt列空间的正交投影算子为:P=ϕt(ϕtTϕt)1ϕtTP =\phi_{t}(\phi_{t}^{T}\phi_{t})^{-1}\phi_{t}^{T}
      通过从e0减去其在Φt所张成空间上的正交投影得到残差e1:e1=e0Pe0=(IP)e0e_{1}=e_{0}-Pe_{0}=(I-P)e_{0}
    4. 对残差迭代执行(2)、(3)步em+1=emPem=(IP)eme_{m+1}=e_{m}-Pe_{m}=(I-P)e_{m}其中I为单位阵。需要注意的是在迭代过程中Φt为所有被选择过的原子组成的矩阵,因此每次都是不同的,所以由它生成的正交投影算子矩阵P每次都是不同的。
    5. 直到达到某个指定的停止准则后停止算法

    OMP减去的PemPe_{m}eme_{m}在所有被选择过的原子组成的矩阵ϕt\phi_{t}所张成空间上的正交投影,而MP减去的PemPe_{m}eme_{m}在本次被选择的原子ϕm\phi_{m}所张成空间上的正交投影。

    3、代码

    代码好像不对,望高人指点!!!!

    def OMP(X,y,K):#k表示稀疏度
        #初始化phi
        tmp = []
        #归一化
        _range = np.max(X) - np.min(X)
        X = (X - np.min(X)) / _range
        #初始化残差e0
        np.random.seed(0)
        p = np.random.permutation(range(len(X)))#一同打乱x和y
        X, Y = X[p], y[p]
        residual_e = Y.reshape(X.shape[0],-1)
        t = 0
        while (t<K or np.any(X)):
            t += 1
            inner_products = np.abs(np.dot(residual_e.T, X))
            max_index = inner_products.argmax()
            tmp.append(X[:, max_index])
            phi  = np.array(tmp).reshape(X.shape[0],t)
            X = np.delete(X, [max_index], axis=1)
            P = np.dot(np.dot(phi, np.linalg.inv(np.dot(phi.T, phi))), phi.T)
            residual_e = np.dot((np.eye(P.shape[0], P.shape[1])-P),residual_e)
        return residual_e
    
    展开全文
  • 压缩传感(正交匹配追踪算法)程序
  • 利用信号噪声比和均方误差对改进后的正交匹配追踪算法进行去噪和识别的检验,以此判断输电信号的识别效果。通过对改进后的算法进行实验仿真表明:在信号的去噪过程中,MPA算法最接近原始输电信号,而改进后的正交...
  • 基于改进正交匹配追踪算法的光谱反射率重构研究
  • 正交匹配追踪算法的本质思想是,以贪婪迭代的方式选择测量矩阵Φ的列,使得在每次迭代中所选择的列与当前的冗余向量最大程度地相关,从测量向量中减去相关部分并反复迭代,直到迭代次数达到稀疏度K,强制迭代停止。
  • 自适应最优路径的正交匹配追踪算法研究,计算信息系统学报
  • 正交匹配追踪算法OMP

    千次阅读 2019-09-01 22:34:08
    浅谈压缩感知(九):正交匹配追踪算法OMP </h1> <div class="clear"></div> <div class="postBody"> 主要内容: OMP算法介绍 OMP的MATLAB实现...

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

            </h1>
            <div class="clear"></div>
            <div class="postBody">
    

    主要内容:

    1. OMP算法介绍
    2. OMP的MATLAB实现
    3. OMP中的数学知识

    一、OMP算法介绍

    来源:http://blog.csdn.net/scucj/article/details/7467955

    1、信号的稀疏表示(sparse representation of signals)

    给定一个过完备字典矩阵,其中它的每列表示一种原型信号的原子。给定一个信号y,它可以被表示成这些原子的稀疏线性组合。信号 y 可以被表达为 y = Dx ,或者字典矩阵中所谓过完备性,指的是原子的个数远远大于信号y的长度(其长度很显然是n),即n<<k

    2、MP算法(匹配追踪算法)

    2.1 算法描述

    作为对信号进行稀疏分解的方法之一,将信号在完备字典库上进行分解。

    假定被表示的信号为y,其长度为n。假定H表示Hilbert空间,在这个空间H里,由一组向量构成字典矩阵D,其中每个向量可以称为原子(atom),其长度与被表示信号 y 的长度n相同,而且这些向量已作为归一化处理,即|,也就是单位向量长度为1MP算法的基本思想:从字典矩阵D(也称为过完备原子库中),选择一个与信号 y 最匹配的原子(也就是某列),构建一个稀疏逼近,并求出信号残差,然后继续选择与信号残差最匹配的原子,反复迭代,信号y可以由这些原子来线性和,再加上最后的残差值来表示。很显然,如果残差值在可以忽略的范围内,则信号y就是这些原子的线性组合。如果选择与信号y最匹配的原子?如何构建稀疏逼近并求残差?如何进行迭代?我们来详细介绍使用MP进行信号分解的步骤:[1] 计算信号 y 与字典矩阵中每列(原子)的内积,选择绝对值最大的一个原子,它就是与信号 y 在本次迭代运算中最匹配的。用专业术语来描述:令信号,从字典矩阵中选择一个最为匹配的原子,满足r0 表示一个字典矩阵的列索引。这样,信号 y 就被分解为在最匹配原子的垂直投影分量和残值两部分,即:[2]对残值R1f进行步骤[1]同样的分解,那么第K步可以得到:

     其中 满足。可见,经过K步分解后,信号 y 被分解为:,其中

    2.2 继续讨论

    (1)为什么要假定在Hilbert空间中?Hilbert空间就是定义了完备的内积空。很显然,MP中的计算使用向量的内积运算,所以在在Hilbert空间中进行信号分解理所当然了。什么是完备的内积空间?篇幅有限就请自己搜索一下吧。

    (2)为什么原子要事先被归一化处理了,即上面的描述。内积常用于计算一个矢量在一个方向上的投影长度,这时方向的矢量必须是单位矢量。MP中选择最匹配的原子是,是选择内积最大的一个,也就是信号(或是残值)在原子(单位的)垂直投影长度最长的一个,比如第一次分解过程中,投影长度就是,三个向量,构成一个三角形,且正交(不能说垂直,但是可以想象二维空间这两个矢量是垂直的)。

    (3)MP算法是收敛的,因为正交,由这两个可以得出,得出每一个残值比上一次的小,故而收敛。

    2.3 MP算法的缺点

    如上所述,如果信号(残值)在已选择的原子进行垂直投影是非正交性的,这会使得每次迭代的结果并不少最优的而是次最优的,收敛需要很多次迭代。举个例子说明一下:在二维空间上,有一个信号 y D=[x1, x2]来表达,MP算法迭代会发现总是在x1x2上反复迭代,即,这个就是信号(残值)在已选择的原子进行垂直投影的非正交性导致的。再用严谨的方式描述[1]可能容易理解:Hilbert空间H中,,定义,就是它是这些向量的张成中的一个,MP构造一种表达形式:;这里的Pvf表示 fV上的一个正交投影操作,那么MP算法的第 k 次迭代的结果可以表示如下(前面描述时信号为y,这里变成f了,请注意)

    如果  是最优的k项近似值,当且仅当。由于MP仅能保证,所以一般情况下是次优的。这是什么意思呢?k个项的线性表示,这个组合的值作为近似值,只有在第k个残差和正交,才是最优的。如果第k个残值与正交,意味这个残值与fk的任意一项都线性无关,那么第k个残值在后面的分解过程中,不可能出现fk中已经出现的项,这才是最优的。而一般情况下,不能满足这个条件,MP一般只能满足第k个残差和xk正交,这也就是前面为什么提到"信号(残值)在已选择的原子进行垂直投影是非正交性的"的原因。如果第k个残差和fk不正交,那么后面的迭代还会出现fk中已经出现的项,很显然fk就不是最优的,这也就是为什么说MP收敛就需要更多次迭代的原因。不是说MP一定得到不到最优解,而且其前面描述的特性导致一般得到不到最优解而是次优解。那么,有没有办法让第k个残差与正交,方法是有的,这就是下面要谈到的OMP算法。

    3、OMP算法

    3.1 算法描述

    OMP算法的改进之处在于:在分解的每一步对所选择的全部原子进行正交化处理,这使得在精度要求相同的情况下,OMP算法的收敛速度更快。

    那么在每一步中如何对所选择的全部原子进行正交化处理呢?在正式描述OMP算法前,先看一点基础思想。

    先看一个 k  阶模型,表示信号 f 经过 k 步分解后的情况,似乎很眼熟,但要注意它与MP算法不同之处,它的残值与前面每个分量正交,这就是为什么这个算法多了一个正交的原因,MP中仅与最近选出的的那一项正交。

    (1)

     k + 1 阶模型如下:

    (2)

    应用 k + 1阶模型减去k 阶模型,得到如下:

    (3)

    我们知道,字典矩阵D的原子是非正交的,引入一个辅助模型,它是表示对前k个项的依赖,描述如下:

    (4)

    和前面描述类似,span(x1, ...xk)之一上的正交投影操作,后面的项是残值。这个关系用数学符号描述:

    请注意,这里的 a b 的上标表示第 k 步时的取值。

    (4)带入(3)中,有:

    5

    如果一下两个式子成立,(5)必然成立。

    (6)

    (7)

    ,有

    其中

    ak的值是由求法很简单,通过对(7)左右两边添加作内积消减得到:

    后边的第二项因为它们正交,所以为0,所以可以得出ak的第一部分。对于,在(4)左右两边中与作内积,可以得到ak的第二部分。

    对于(4),可以求出,求的步骤请参见参考文件的计算细节部分。为什么这里不提,因为后面会介绍更简单的方法来计算。

    3.2 收敛性证明

    通过(7),由于正交,将两个残值移到右边后求二范的平方,并将ak的值代入可以得到:

    可见每一次残差比上一次残差小,可见是收敛的。

    3.3 算法步骤

    整个OMP算法的步骤如下:

    由于有了上面的来龙去脉,这个算法就相当好理解了。

    到这里还不算完,后来OMP的迭代运算用另外一种方法可以计算得知,有位同学的论文[2]描述就非常好,我就直接引用进来:

    对比中英文描述,本质都是一样,只是有细微的差别。这里顺便贴出网一哥们写的OMP算法的代码,源出处不得而知,共享给大家。

    二、OMP的MATLAB实现

     1、一维信号重建

    代码:

    复制代码
    %  1-D信号压缩传感的实现(正交匹配追踪法Orthogonal Matching Pursuit)
    %  测量数M>=K*log(N/K),K是稀疏度,N信号长度,可以近乎完全重构
    %  编程人--香港大学电子工程系 沙威  Email: wsha@eee.hku.hk
    %  编程时间:2008年11月18日
    %  文档下载: http://www.eee.hku.hk/~wsha/Freecode/freecode.htm 
    %  参考文献:Joel A. Tropp and Anna C. Gilbert 
    %  Signal Recovery From Random Measurements Via Orthogonal Matching
    %  Pursuit,IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12,
    %  DECEMBER 2007.
    

    clc;clear

    %% 1. 时域测试信号生成
    K
    =7; % 稀疏度(做FFT可以看出来)
    N
    =256; % 信号长度
    M
    =64; % 测量数(M>=Klog(N/K),至少40,但有出错的概率)
    f1
    =50; % 信号频率1
    f2
    =100; % 信号频率2
    f3
    =200; % 信号频率3
    f4
    =400; % 信号频率4
    fs
    =800; % 采样频率
    ts
    =1/fs; % 采样间隔
    Ts
    =1:N; % 采样序列
    x
    =0.3cos(2pif1Ts
    ts)+0.6cos(2pif2Tsts)+0.1cos(2pif3Tsts)+0.9cos(2pif4Ts*ts); % 完整信号,由4个信号叠加而来

    %% 2. 时域信号压缩传感
    Phi
    =randn(M,N); % 测量矩阵(高斯分布白噪声)64256的扁矩阵,Phi也就是文中说的D矩阵
    s
    =Phi
    x.; % 获得线性测量 ,s相当于文中的y矩阵

    %% 3. 正交匹配追踪法重构信号(本质上是L_1范数最优化问题)
    %匹配追踪:找到一个其标记看上去与收集到的数据相关的小波;在数据中去除这个标记的所有印迹;不断重复直到我们能用小波标记“解释”收集到的所有数据。

    m=2K; % 算法迭代次数(m>=K),设x是K-sparse的
    Psi
    =fft(eye(N,N))/sqrt(N); % 傅里叶正变换矩阵
    T
    =Phi
    Psi; % 恢复矩阵(测量矩阵*正交反变换矩阵)

    hat_y
    =zeros(1,N); % 待重构的谱域(变换域)向量
    Aug_t
    =[]; % 增量矩阵(初始值为空矩阵)
    r_n
    =s; % 残差值

    for times=1:m; % 迭代次数(有噪声的情况下,该迭代次数为K)
    for col=1:N; % 恢复矩阵的所有列向量
    product(col)
    =abs(T(:,col)*r_n); % 恢复矩阵的列向量和残差的投影系数(内积值)
    end
    [val,pos]
    =max(product); % 最大投影系数对应的位置,即找到一个其标记看上去与收集到的数据相关的小波
    Aug_t
    =[Aug_t,T(:,pos)]; % 矩阵扩充

    T(:,pos)</span>=zeros(M,<span style="color: #800080;">1</span>);                          %<span style="color: #000000;">  选中的列置零(实质上应该去掉,为了简单我把它置零),在数据中去除这个标记的所有印迹
    aug_y</span>=(Aug_t<span style="color: #800000;">'</span><span style="color: #800000;">*Aug_t)^(-1)*Aug_t</span><span style="color: #800000;">'</span>*s;           %<span style="color: #000000;">  最小二乘,使残差最小
    r_n</span>=s-Aug_t*aug_y;                            %<span style="color: #000000;">  残差
    pos_array(times)</span>=pos;                         %<span style="color: #000000;">  纪录最大投影系数的位置
    

    end
    hat_y(pos_array)=aug_y; % 重构的谱域向量
    hat_x
    =real(Psi*hat_y.); % 做逆傅里叶变换重构得到时域信号

    %% 4. 恢复信号和原始信号对比
    figure(
    1);
    hold on;
    plot(hat_x,
    k.-) % 重建信号
    plot(x,
    r) % 原始信号
    legend(
    Recovery,Original)
    norm(hat_x.
    -x)/norm(x) % 重构误差

    复制代码

    结果:

    2、二维信号重建

    代码:

    复制代码
    %  本程序实现图像LENA的压缩传感
    %  程序作者:沙威,香港大学电气电子工程学系,wsha@eee.hku.hk
    %  算法采用正交匹配法,参考文献 Joel A. Tropp and Anna C. Gilbert 
    %  Signal Recovery From Random Measurements Via Orthogonal Matching
    %  Pursuit,IEEE TRANSACTIONS ON INFORMATION THEORY, VOL. 53, NO. 12,
    %  DECEMBER 2007.
    %  该程序没有经过任何优化
    

    function Wavelet_OMP

    clc;clear

    % 读文件
    X
    =imread(lena256.bmp);
    X
    =double(X);
    [a,b]
    =size(X);

    % 小波变换矩阵生成
    ww
    =DWT(a);

    % 小波变换让图像稀疏化(注意该步骤会耗费时间,但是会增大稀疏度)
    X1
    =ww*sparse(X)*ww;
    % X1=X;
    X1
    =full(X1);

    % 随机矩阵生成
    M
    =190;
    R
    =randn(M,a);
    % R=mapminmax(R,0,255);
    % R
    =round®;

    % 测量值
    Y
    =R*X1;

    % OMP算法
    % 恢复矩阵
    X2
    =zeros(a,b);
    % 按列循环
    for i=1:b
    % 通过OMP,返回每一列信号对应的恢复值(小波域)
    rec
    =omp(Y(:,i),R,a);
    % 恢复值矩阵,用于反变换
    X2(:,i)
    =rec;
    end

    % 原始图像
    figure(
    1);
    imshow(uint8(X));
    title(
    原始图像);

    % 变换图像
    figure(
    2);
    imshow(uint8(X1));
    title(
    小波变换后的图像);

    % 压缩传感恢复的图像
    figure(
    3);
    % 小波反变换
    X3
    =ww*sparse(X2)*ww;
    % X3=X2;
    X3
    =full(X3);
    imshow(uint8(X3));
    title(
    恢复的图像);

    % 误差(PSNR)
    % MSE误差
    errorx
    =sum(sum(abs(X3-X).^2));
    % PSNR
    psnr
    =10log10(255255/(errorx/a/b))

    % OMP的函数
    % s-测量;T-观测矩阵;N-向量大小
    function hat_y
    =omp(s,T,N)
    Size
    =size(T); % 观测矩阵大小
    M
    =Size(1); % 测量
    hat_y
    =zeros(1,N); % 待重构的谱域(变换域)向量
    Aug_t
    =[]; % 增量矩阵(初始值为空矩阵)
    r_n
    =s; % 残差值

    for times=1:M; % 迭代次数(稀疏度是测量的1/4)
    for col=1:N; % 恢复矩阵的所有列向量
    product(col)
    =abs(T(:,col)*r_n); % 恢复矩阵的列向量和残差的投影系数(内积值)
    end
    [val,pos]
    =max(product); % 最大投影系数对应的位置
    Aug_t
    =[Aug_t,T(:,pos)]; % 矩阵扩充
    T(:,pos)
    =zeros(M,1); % 选中的列置零(实质上应该去掉,为了简单我把它置零)
    aug_y
    =(Aug_t*Aug_t)^(-1)*Aug_ts; % 最小二乘,使残差最小
    r_n
    =s-Aug_t
    aug_y; % 残差
    pos_array(times)
    =pos; % 纪录最大投影系数的位置

    </span><span style="color: #0000ff;">if</span> (norm(r_n)&lt;<span style="color: #800080;">0.9</span>)                            %<span style="color: #000000;">  残差足够小
        </span><span style="color: #0000ff;">break</span><span style="color: #000000;">;
    end
    

    end
    hat_y(pos_array)=aug_y; % 重构的向量

    复制代码

    结果:

    三、OMP算法中的数学知识

    算法会有一些线性代数中的概念和知识,主要是关于子空间、最小二乘、投影矩阵等,详情请参考

    最小二乘的几何意义及投影矩阵

    <div id="blog_post_info">
    
    4
    0
    <div class="clear"></div>
    <div id="post_next_prev">
    
    <a href="https://www.cnblogs.com/AndyJee/p/5045668.html" class="p_n_p_prefix">« </a> 上一篇:    <a href="https://www.cnblogs.com/AndyJee/p/5045668.html" title="发布于 2015-12-14 16:29">浅谈压缩感知(八):两篇科普文章</a>
    <br>
    <a href="https://www.cnblogs.com/AndyJee/p/5048235.html" class="p_n_p_prefix">» </a> 下一篇:    <a href="https://www.cnblogs.com/AndyJee/p/5048235.html" title="发布于 2015-12-15 14:30">浅谈压缩感知(十):范数与稀疏性</a>
    
    posted @ 2015-12-15 09:29 AndyJee 阅读(28779) 评论(1) 编辑 收藏
    </div><!--end: topics 文章、评论容器-->
    

      
    			</div>
    

    #1楼

        <span id="comment-maxId" style="display:none">3718412</span>
        <span id="comment-maxDate" style="display:none">2017/6/20 下午12:59:28</span>
    

    2017-06-20 12:59

            <a id="a_comment_author_3718412" href="https://home.cnblogs.com/u/1178954/" target="_blank">数理小先生</a>
    
    		</div>
    		<div class="feedbackCon">
    
    楼主在吗?急需要求助
    		</div>
    	</div>
    
        <div id="google_ads_iframe_/1090369/C2_0__container__" style="border: 0pt none;"><iframe id="google_ads_iframe_/1090369/C2_0" title="3rd party ad content" name="google_ads_iframe_/1090369/C2_0" width="468" height="60" scrolling="no" marginwidth="0" marginheight="0" frameborder="0" srcdoc="" style="border: 0px; vertical-align: bottom;" data-google-container-id="2" data-load-complete="true"></iframe></div></div>
    </div>
    <div id="under_post_kb">
    
    展开全文
  • 在基于压缩感知的正交匹配追踪算法中,候选集原子的选取对最终的重建性能至关重要.文中结合前向预测和回溯两种策略更新候选原子集,提出了一种基于预测与回溯的正交匹配追踪(LABOMP)算法.该算法通过设定阈值将所有迭代...
  • 浅析匹配追踪算法(Matching Pursuit,MP)与正交匹配追踪算法(Orthogonal Matching Pursuit,OMP)前言第一个例子基本概念OMP算法求解过程MP算法求解过程第二个例子MP和OMP的缺点后记参考文献 前言 考虑下列数学...

    浅析匹配追踪算法(Matching Pursuit,MP)与正交匹配追踪算法(Orthogonal Matching Pursuit,OMP)

    前言

    考虑下列数学模型:
    Alt
    在压缩感知(Compressed sensing)术语中,从X和A中找到Y称为压缩(compression)。 相反,从Y和A中找到原始X称为重构(reconstruction)
    x被称为原始信号(original signal)原始向量(original vector),A被称为压缩矩阵(Compression matrix)或感知矩阵(sensing matrix),而Y被称为压缩信号(compressed signal)或压缩向量(compressed vector)

    第一个例子

    给定压缩矩阵A和原始向量X:
    Alt
    很容易就可以得到压缩向量Y:
    Alt
    然而,反过来给定压缩向量Y和原始向量X:
    [Alt]
    很难得到找到原始的(或尽可能接近的) X。

    基本概念

    首先介绍一些基本概念。

    我们将压缩矩阵A看作是列向量的集合,即:
    Alt
    其中:
    在这里插入图片描述
    这些列向量(b1,b2,b3)被称为基(basis)或原子(atoms)
    令:
    在这里插入图片描述
    那么:
    在这里插入图片描述
    上述方程告诉我们,Y是用X中的系数(x1, x2, x3)表示的基(b1,b2,b3)的线性组合,且已知x1=-1.2,x2=1,x3=0。换句话说,在上述方程中,基b1对生成Y的贡献分别是-1.2,基b2对生成Y的贡献分别是1,基b3对生成Y的贡献分别是0。

    OMP算法求解过程

    OMP的工作原理与MP相似,但MP是找出哪一个基对Y贡献最大,然后哪一个基贡献第二,哪一个基贡献第三,依此类推。OMP计算过程需要进行N次迭代,其中N是A中基的个数。在上述的示例中,N为3。

    1. 计算基的贡献度
    上述例子中有三个基,分别是:
    在这里插入图片描述
    以及
    在这里插入图片描述
    所以Y中每个基的贡献度分别是:
    在这里插入图片描述
    显然,基b1的贡献最大,其贡献度为-1.34(使用绝对值)。
    在第一轮迭代中,选择基b1,该基的贡献度为-1.34。
    当然,可以在一个单独的步骤中计算每一个基的点积,即:
    在这里插入图片描述
    2. 计算残差r1
    首先,选择第一个基,即基b1和贡献度λ1=-1.34。残差为:
    在这里插入图片描述
    如图2所示,残差r1与第一个基b1是垂直的。
    在这里插入图片描述
    3. 重复迭代
    第一次迭代后,我们得到所选基b1。把这些基重新组合成一个新的基Anew。即:
    在这里插入图片描述
    重写贡献度值,即:
    在这里插入图片描述
    值-1.34在第一个元素因为它是第一个基b1的贡献。
    第一次迭代后残差为:
    在这里插入图片描述
    现在我们要从剩下的基b2和b3中选择对残差r贡献最大的基,在一步中:
    在这里插入图片描述

    因此,基b2的贡献更大,即0.98。
    我们把选定的基b2添加到矩阵Anew中,
    在这里插入图片描述

    现在,这一步不同于MP。这里,我们需要重新计算基b1和b2共同对Y的贡献(而不是基b2对r1的贡献)

    为了解决这个贡献问题,我们必须求出最小值平方问题,很容易表述为:
    在这里插入图片描述
    在数学术语中,这个公式可以写成:
    在这里插入图片描述
    根据最小二乘原理,上述公式的解为:
    在这里插入图片描述
    其中,Anew+是Anew的广义逆矩阵。
    在这里插入图片描述
    在上述例子中
    在这里插入图片描述
    在Matlab中计算广义逆矩阵很简单,只需使用pinv()命令即可。
    在这里插入图片描述
    计算λ之后,更新xrec
    在这里插入图片描述
    在这里我们把λ放在xrec在第一和第二行,因为它对应于第一和第二被选择的基b1和b2
    重新得到Anew和λ之后,现在我们可以更新新的残差r2
    在这里插入图片描述
    到此,残差为0。我们可以停在这里,或者继续下一步。(如果在这里停止,我们可以节省一些计算工作) 。

    4. 最后迭代

    由于残差已经消失,因此不需要此步骤。(许多OMP实现软件需要信号稀疏度K的参数。这是该软件将迭代K次的线索。此后它将停止,无论剩下多少残差)
    因此,我们的重构信号为:
    在这里插入图片描述
    它和原始信号是一样的.

    以上便是OMP的整个计算流程。

    MP算法求解过程

    1. 计算贡献度
    Y中每个基的贡献度分别是:
    在这里插入图片描述
    显然,基b1的贡献最大,其贡献度为-1.34(使用绝对值)。

    ==================================================================================

    第一轮迭代

    选择基b1,该基的贡献度为-1.34
    重写贡献度值,即:
    在这里插入图片描述

    计算残差
    在这里插入图片描述
    接下来我们计算这个残差和基b2和基b3的点积。(不需要用基b1计算,因为这个残差必定垂直于基b1).
    在这里插入图片描述
    取绝对值,我们得到基b2是第二强的影响。
    贡献度值,即:
    在这里插入图片描述
    第一轮迭代完成

    ==================================================================================

    第二轮迭代,计算残差:
    在这里插入图片描述
    接下来我们计算这个残差r2和基b1基b3的点积。
    在这里插入图片描述
    在第二轮迭代中选择基b1

    贡献度值,即:
    在这里插入图片描述
    第二轮迭代完成

    ==================================================================================

    第三轮迭代,计算残差:
    在这里插入图片描述
    接下来我们计算这个残差r3和基b2基b3的点积。
    在这里插入图片描述
    在第三轮迭代中选择基b2

    贡献度值,即:
    在这里插入图片描述
    第三轮迭代完成

    ==================================================================================

    第四轮迭代,计算残差:
    在这里插入图片描述
    重复上述过程,直到残差达到指定阈值。

    ==================================================================================
    以上便是MP算法的计算流程。

    第二个例子

    现在我们继续看另一个例子,给定:
    在这里插入图片描述
    很容易就可以得到:

    在这里插入图片描述
    现在给定A和Y用OMP计算X。

    步骤如下:

    1.A中有四个基
    在这里插入图片描述
    2. 因为基的长度不是1,我们需要把它们都归一化。
    在这里插入图片描述
    3. 计算这些归一化基的贡献度:
    在这里插入图片描述
    4.第二个标准化的基b ̂2的贡献最高。因此,我们将第二个基b2放入矩阵Anew中。
    在这里插入图片描述
    5.计算最小二乘问题的解λ1
    在这里插入图片描述
    因为这个λ1是基b2的系数,那么:
    在这里插入图片描述
    6.计算残差
    在这里插入图片描述
    7.重复第3步。计算基b ̂1,b ̂3,b ̂4中哪一个基对残差r1的贡献最大。
    在这里插入图片描述
    在这里,在基b ̂3的贡献最大的,是1.7902。
    8.将基b3而不是(b ̂3)添加到Anew中。
    在这里插入图片描述
    4. 计算最小二乘问题的解λ2
    在这里插入图片描述
    由于λ2对应基b2和基b3,因此:
    在这里插入图片描述
    10.计算残差在这里插入图片描述
    11.重复第3步,直到最后一次迭代。
    12.计基b1和基b4的贡献度
    在这里插入图片描述
    因此,基b4的贡献度最大,为0.7308.
    5. 将基b4而不是(b ̂4)添加到Anew中。
    在这里插入图片描述
    6. 计算最小二乘问题的解λ3.在这里插入图片描述
    因为λ2对应基b2、基b3和基b4,因此,
    在这里插入图片描述
    15.计算残差
    在这里插入图片描述
    16.迭代到此停止,因为残差已经全部是0了。重构的原始向量xrec为:
    在这里插入图片描述

    MP和OMP的缺点

    OMP很快。与凸优化相比,速度非常快。这是贪婪算法的一个优点。但是OMP也遭受矩阵A高度相干性的困扰。矩阵中的相干性是什么?简单来说,矩阵A中的相干性表示矩阵A中两列之间的相似性(similarity)。
    请看下面两个矩阵:
    在这里插入图片描述
    矩阵A2具有非常高的相干性,因为第二类和第一列非常相似。矩阵的相干性较低,因为第二列与第一列和第三列不太相似。相干值用μ表示:
    在这里插入图片描述
    μ的值在0和1之间。如果μ的值很大,则通常OMP给出一个错误的重构结果。

    试试下面的例子:
    已知
    在这里插入图片描述
    求出Y。
    然后,给定A和Y,使用MP和OMP求X。
    下面直接给出结果:
    在这里插入图片描述
    可以看出,MP和OMP有类似特性,且都不能计算出正确结果

    后记

    正如我们在上面的过程中看到的那样,我们现在注意到以下事实。
    (1)我们从OMP计算得出的最高贡献来自标准化基础。并非来自最初的非标准化基础。
    (2)如果测量或重构矩阵A中的所有基础都已被归一化,则无需进行归一化步骤即可继续进行计算。
    (3)每个基的贡献是由残基和归一化基的点积完成的。
    (4)在MP的情况下,重建系数xrec是根据基和残基的点积计算得出的,而在OMP上,则是根据Anew到Y的最小二乘解计算得出的系数xrec。最小二乘解λ表示基对应位置的xrec。Anew本身是从非标准化的基得来的,这个过程需要时间。因此,OMP比MP更慢。
    (5)残差r是由Y、Anew和λ计算得来的
    (6)迭代将持续与A中的行数(即M)一样多。或者,如果信号k的稀疏度已知,则迭代重复k次。如果k <M,则知道k将有助于我们更快地进行计算。但是,如果k未知,则迭代次数最多应为M。

    参考文献

    [1]: Usman, Koredianto, (2017), Introduction to Orthogonal Matching Pursuit, Telkom University, Online : http://korediantousman.staff.telkomuniversity.ac.id.
    [2]: Usman, Koredianto, 2017, Introduction to Matching Pursuit, Telkom University, Online : http://korediantousman.staff.telkomuniversity.ac.id/tutorial.

    展开全文
  • 受压缩感知理论的启发, 基于参数向量所具有的稀疏特性, 提出一种新的阈值正交匹配追踪算法辨识系统的参数和时滞. 仿真实验表明, 所提出的算法能在少量采样时有效地辨识系统参数、估计未知时滞, 同时验证了算法的...
  • 在此基础上, 提出了一种基于互交替投影的块稀疏正交匹配追踪算法mutual alternating projection-block orthogonal matching pursuit, MAP-BOMP。该算法利用互交替投影方法不断构造新的测量矩阵和感知矩阵, 使得矩阵...
  • 正交匹配追踪法,可用于一维信号的重构,
  • 受到压缩的启发感知理论,本文提出了一种阈值正交匹配追踪算法,可以同时识别MISO-FIR系统的参数,命令和时延。 所提出的方法只需要少量与传统的识别方法(例如最小二乘法)相比,采样数据的准确性更高。 模拟通过...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 396
精华内容 158
关键字:

正交匹配追踪算法