0 前情提要

0.1 数学模型和总体框图如下

给定输入信号X∈RN×1\boldsymbol{X} \in \mathbb{R}^{N\times1}X∈RN×1,最终想要得到压缩信号A∈RM×1\boldsymbol{A} \in \mathbb{R}^{M\times1}A∈RM×1,K<<NK<<NK<<N

0.2 压缩过程图例分析如下

整个压缩过程也可以被称为感知过程
A=ΦX=ΦΨY=ΘY\boldsymbol{A} =\boldsymbol{\Phi}\boldsymbol{X} = \boldsymbol{\Phi}\boldsymbol{\Psi} \boldsymbol{Y} = \boldsymbol{\Theta}\boldsymbol{Y} A=ΦX=ΦΨY=ΘY

Θ\boldsymbol{\Theta}Θ即为感知过程的核心命名为感知矩阵

符号 含义 维度 属性
X\boldsymbol{X}X 输入信号;待压缩信号 RN×1\mathbb{R}^{N\times1}RN×1 未知,需要恢复
Φ\boldsymbol{\Phi}Φ 观测矩阵;测量矩阵 RM×N\mathbb{R}^{M \times N}RM×N 已知(非自适应性)
Ψ\boldsymbol{\Psi}Ψ 变换矩阵;变换基矩阵;稀疏基矩阵;稀疏矩阵;正交基字典矩阵 RN×N\mathbb{R}^{N\times N}RN×N 已知(非自适应性)
Y\boldsymbol{Y}Y 正交基变换后的稀疏表示 RN×1\mathbb{R}^{N\times1}RN×1 未知,需要恢复
Θ\boldsymbol{\Theta}Θ 感知矩阵,传感矩阵 RM×N\mathbb{R}^{M\times N}RM×N 已知(非自适应性)
A\boldsymbol{A}A 观测压缩所得到压缩信号 RM×1\mathbb{R}^{M\times1}RM×1 已知

0.3 算法重构恢复过程如下

在得到已经压缩完的采样信号 A\boldsymbol{A}A 后,根据确定的固定性观测矩阵 Φ\boldsymbol{\Phi}Φ 和稀疏矩阵 Ψ\boldsymbol{\Psi}Ψ 的先验信息进行恢复,数学表达如下
Xˇ=f(A,Θ)\boldsymbol{\check{X}}=f(\boldsymbol{A},\boldsymbol{\Theta}) Xˇ=f(A,Θ)
给定被压缩的信号 A\boldsymbol{A}A 和感知矩阵 Θ\boldsymbol{\Theta}Θ,求解输入原始信号 Xˇ\boldsymbol{\check{X}}Xˇ 的过程称为重构。

重构问题相较于压缩问题来说是一个更加困难的一个任务。

由于M<<NM<<NM<<N, 已知条件所能构成的方程是欠定的,无法轻易求出数值解的,幸运的是,如果原始信号是稀疏的,那么这个问题可以被很好地解决。

解释一下为什么是欠定的:( X\boldsymbol{X}X 满足的约束如下)
A=ΨX[a1⋮aM]=[ψ11ψ12...ψ1Nψ2Nψ2N...ψ2N⋮⋮⋮⋮ψM1ψM2...ψMN][x1x2⋮xN]\boldsymbol{A} = \boldsymbol{\Psi}\boldsymbol{X}\\ \left[\begin{array}{c}a_1 \\ \vdots\\ a_M \end{array}\right] = \left[\begin{array} {cccc} \psi_{11} & \psi_{12} & ... & \psi_{1N} \\\psi_{2N} & \psi_{2N} &... &\psi_{2N}\\ \vdots & \vdots & \vdots & \vdots \\ \psi_{M1} & \psi_{M2} &... &\psi_{MN}\end{array}\right]\left[\begin{array}{c}x_1 \\ x_2 \\ \vdots \\ x_N\end{array}\right] A=ΨX⎣⎢⎡​a1​⋮aM​​⎦⎥⎤​=⎣⎢⎢⎢⎡​ψ11​ψ2N​⋮ψM1​​ψ12​ψ2N​⋮ψM2​​......⋮...​ψ1N​ψ2N​⋮ψMN​​⎦⎥⎥⎥⎤​⎣⎢⎢⎢⎡​x1​x2​⋮xN​​⎦⎥⎥⎥⎤​
实际使用过程中需要求解出 NNN 个未知数,但是只有 MMM 个方程,未知数的个数远远大于方程的个数。

若N=MN=MN=M,则可轻松由A\boldsymbol{A}A解出X\boldsymbol{X}X和Y\boldsymbol{Y}Y

而M<<NM<<NM<<N,可根据稀疏表示下的信号Y\boldsymbol{Y}Y和矩阵所具有的RIP性质重构

一般可以抽象为如下求解任务
min⁡∥ΨTX∥0s.t.ΘX=ΦΨX=A\min \left\| \boldsymbol{\Psi}^{T} \boldsymbol{X}\right\|_{0} \\s.t. \boldsymbol{\Theta} \boldsymbol{X}=\boldsymbol{\Phi}\boldsymbol{\Psi}\boldsymbol{X}= \boldsymbol{A} min∥∥∥​ΨTX∥∥∥​0​s.t.ΘX=ΦΨX=A

1 概述

  • 匹配追踪算法(Matching Pursuits,MP)

提出时间:90年代初

国内文献都仅描述了算法步骤和简单的应用,并未对其进行详尽的分析

国外的文献还是分析的很透彻,所以我结合自己的理解,来分析一下写到博客里

2 MP算法

2.0 主要的思路

如果选择与信号最匹配的原子?

如何构建稀疏逼近并求残差?

如何进行迭代?

2.1 算法思想描述

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

假定被表示的信号为 X\boldsymbol{X}X,其长度为 NNN。假定 H\mathbb{H}H 表示Hilbert空间,在空间 H\mathbb{H}H 里,由一组向量 {d1,d2,...,dJ}\{\boldsymbol{d}_1,\boldsymbol{d}_2,...,\boldsymbol{d}_J\}{d1​,d2​,...,dJ​} 构成字典矩阵 D\boldsymbol{D}D,其中每个向量 di\boldsymbol{d_i}di​ 可以称为原子(atom),每个原子其长度与被表示信号 X\boldsymbol{X}X 的长度 NNN 相同,而且这些向量已作为归一化处理,即∥di∥=1\|\boldsymbol{d_i}\| = 1∥di​∥=1,也就是单位向量长度为1。

MP算法的基本思想:从字典矩阵 D\boldsymbol{D}D(也称为过完备原子库,过完备字典就是表示字典的原子数量大于信息维度 J>NJ>NJ>N 中),选择一个与信号 X\boldsymbol{X}X 最匹配的原子(也就是某列),构建一个只针对这个列向量有线性表示系数的稀疏逼近,并求出信号残差,然后继续选择与信号残差最匹配的原子,反复迭代,信号 X\boldsymbol{X}X 可以由这些原子线性和,同时再加上最后的残差值来表示。很显然,如果残差值在可以忽略的范围内,则信号 X\boldsymbol{X}X 就是这些原子的线性组合。

匹配追踪的中心问题是你如何选择信号在字典中最优的若干个展开项。

2.2 分解步骤实现

2.2.1 第一步

计算被压缩的信号 A\boldsymbol{A}A 与字典矩阵中每列原子 di\boldsymbol{d}_idi​ 的内积,选择绝对值最大的一个原子,它就是过完备字典 D\boldsymbol{D}D 中与信号 A\boldsymbol{A}A 在本次迭代运算中最匹配的atom。

用数学语言来描述:令信号 A∈H\boldsymbol{A} \in \mathbb{H}A∈H ,从字典矩阵 D\boldsymbol{D}D 中选择一个最为匹配的原子 di\boldsymbol{d}_idi​ ,满足
∣<A,dr0>∣=supi∈(1,..,N)∣<A,di>∣|<\boldsymbol{A},\boldsymbol{d}_{r_0}>| = sup_{i \in (1,..,N)}|<\boldsymbol{A},\boldsymbol{d}_i>| ∣<A,dr0​​>∣=supi∈(1,..,N)​∣<A,di​>∣
supi∈(1,..,N)f(i)sup_{i \in (1,..,N)}f(i)supi∈(1,..,N)​f(i) 表示函数f(i)f(i)f(i) 的上确界

r0r_0r0​ 表示一个字典矩阵的列索引,是所有列中能得到最大内积的索引,r∗r_*r∗​ 下标表示第几次迭代的含义。

这样,信号 A\boldsymbol{A}A 就被分解或者理解为被表示为两个部分,即:

第一部分:在最匹配原子 dr0\boldsymbol{d}_{r_0}dr0​​ 的投影分量(dr0\boldsymbol{d}_{r_0}dr0​​ 乘上一个线性表示的系数)

第二部分:残差的垂直分量 (R1R_1R1​ 表示第一次的迭代剩余的残差的系数 ,f1\boldsymbol{f}_1f1​ 表示第一次迭代剩余的垂直分量)

A=<A,dr0>dr0+R1f1也可以写作(统一以点的形式)R0f0=<R0f0,dr0>dr0+R1f1\boldsymbol{A}=<\boldsymbol{A}, \boldsymbol{d}_{r_0}>\boldsymbol{d}_{r_0}+R_1\boldsymbol{f}_1 \\\text{也可以写作(统一以点的形式)} \\ R_0\boldsymbol{f}_0=<R_0\boldsymbol{f}_0, \boldsymbol{d}_{r_0}>\boldsymbol{d}_{r_0}+R_1\boldsymbol{f}_1 A=<A,dr0​​>dr0​​+R1​f1​也可以写作(统一以点的形式)R0​f0​=<R0​f0​,dr0​​>dr0​​+R1​f1​

2.2.2 第二步

对残值 R1f1R_1\boldsymbol{f}_1R1​f1​ 进行第一步同样的分解,那么第 kkk 步可以得到:
Rkfk=<Rkfk,drk+1>drk+1+Rk+1fk+1R_{k} \boldsymbol{f}_k=<R_{k} \boldsymbol{f}_k, \boldsymbol{d}_{r_{k+1}}>\boldsymbol{d}_{r_{k+1}}+R_{k+1} \boldsymbol{f}_{k+1} Rk​fk​=<Rk​fk​,drk+1​​>drk+1​​+Rk+1​fk+1​
其中 drk+1\boldsymbol{d}_{r_{k+1}}drk+1​​ 满足 ∣<Rkfk,drk+1>∣=supi∈(1,..,J)∣<Rkfk,di>∣|<R_k\boldsymbol{f}_k,\boldsymbol{d}_{r_k+1}>| = sup_{i \in (1,..,J)}|<R_k\boldsymbol{f}_k,\boldsymbol{d}_i>|∣<Rk​fk​,drk​+1​>∣=supi∈(1,..,J)​∣<Rk​fk​,di​>∣。可见,经过 kkk 步分解后,信号 A\boldsymbol{A}A 被分解为:
A=R0f0=∑n=0k<Rnfn,drn>drn+Rk+1fk+1\begin{aligned} \boldsymbol{A}&=R_0\boldsymbol{f}_0 \\ &=\sum_{n=0}^{k}<\boldsymbol{R}_{n} \boldsymbol{f}_n, \boldsymbol{d}_{r_{n}}>\boldsymbol{d}_{r_n} + R_{k+1} \boldsymbol{f}_{k+1} \end{aligned} A​=R0​f0​=n=0∑k​<Rn​fn​,drn​​>drn​​+Rk+1​fk+1​​

2.3 讨论以及个人想法

2.3.1 讨论1:为什么要假定在Hilbert空间中?

Hilbert空间就是定义了完备的内积空间(可以简单的理解为属于完备内积空间的向量在任意内积操作的情况下,所得结果都属于本内积空间)。很显然,MP中的获得总重要原子的比较计算使用向量的内积运算,所以在 Hilbert空间 中进行信号分解理所当然了。

2.3.2 讨论2:为什么原子要先被归一化处理

即上面的描述 ∥di∥=1\|\boldsymbol{d}_i\| = 1∥di​∥=1 。MP中选择最匹配的原子是选择内积最大的一个。也就是信号(或是迭代中残差值)在原子(单位的)投影长度最长的一个,比如第一次分解过程中,投影长度就 <A,dr0><\boldsymbol{A},\boldsymbol{d}_{r_0}><A,dr0​​>。

内积常用于计算一个矢量在一个方向上的投影长度,这时方向的矢量必须是单位矢量,如果不把所有的原子归一化为相同的模长,会出现前面系数受到模长干扰的问题。

2.3.3 讨论3:为什么这种方法可以实现恢复的效果

从数学公式角度出发讲述为什么能恢复

A=DX=[d1d2⋯dN][x1x2⋮xN]=[d11d12...d1N⋮⋮⋮⋮dM1dM2...dMN][x1x2⋮xN][a1a2⋮aM]=[d11∗x1+⋯d1i∗x1⋯+d1N∗xNd21∗x1+⋯d2i∗x2⋯+d2N∗xN⋮⋮⋮dM1∗x1+⋯dMi∗xM⋯+dMN∗xN]\begin{aligned} \boldsymbol{A} &= \boldsymbol{D} \boldsymbol{X} \\&= [\begin{array} {cccc} \boldsymbol{d}_1 & \boldsymbol{d}_2 & \cdots & \boldsymbol{d}_N \end{array}] \left[\begin{array}{c} x_1 \\ x_2 \\ \vdots\\x_N\end{array}\right] \\&= \left[\begin{array} {cccc} d_{11} & d_{12} & ... & d_{1N} \\ \vdots & \vdots & \vdots& \vdots\\ d_{M1} & d_{M2} &... & d_{MN} \end{array}\right]\left[\begin{array}{c} x_1 \\ x_2 \\ \vdots\\x_N\end{array}\right] \\ \left[\begin{array}{c} a_1\\a_2\\\vdots\\a_M\end{array} \right]&= \left[\begin{array}{c} d_{11}*x_1 +\cdots d_{1i}*x_1 \cdots + d_{1N}*x_N\\d_{21}*x_1 +\cdots d_{2i}*x_2\cdots + d_{2N}*x_N\\\vdots\quad\vdots\quad\vdots\\d_{M1}*x_1 +\cdots d_{Mi}*x_M \cdots + d_{MN}*x_N\end{array} \right] \end{aligned} A⎣⎢⎢⎢⎡​a1​a2​⋮aM​​⎦⎥⎥⎥⎤​​=DX=[d1​​d2​​⋯​dN​​]⎣⎢⎢⎢⎡​x1​x2​⋮xN​​⎦⎥⎥⎥⎤​=⎣⎢⎡​d11​⋮dM1​​d12​⋮dM2​​...⋮...​d1N​⋮dMN​​⎦⎥⎤​⎣⎢⎢⎢⎡​x1​x2​⋮xN​​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​d11​∗x1​+⋯d1i​∗x1​⋯+d1N​∗xN​d21​∗x1​+⋯d2i​∗x2​⋯+d2N​∗xN​⋮⋮⋮dM1​∗x1​+⋯dMi​∗xM​⋯+dMN​∗xN​​⎦⎥⎥⎥⎤​​

数学任务:已知 A\boldsymbol{A}A 和 D\boldsymbol{D}D ,猜测 X\boldsymbol{X}X

如果说 A\boldsymbol{A}A 表示的向量和原子字典的某一个原子有着非常强的相关性,代表在构成这个 A\boldsymbol{A}A 的时候原子字典所用来对应表示 di\boldsymbol{d}_idi​ 的系数 xix_ixi​ 比较大,主要都是由 di\boldsymbol{d}_idi​ 构成的,具体表现如下
[a1a2⋮aM]⋅di=[a1a2⋮aM]⋅[d1id2i⋮dMi]=[d11∗x1+⋯d1i∗x1⋯+d1N∗xNd21∗x1+⋯d2i∗x2⋯+d2N∗xN⋮⋮⋮dM1∗x1+⋯dMi∗xM⋯+dMN∗xN]⋅di=(d1∗x1+⋯di∗x2⋯+dN∗xN)⋅di=x1d1⋅di+⋯x2di⋅di⋯+xNdN⋅di\begin{aligned} \\ \left[\begin{array}{c} a_1\\a_2\\\vdots\\a_M\end{array}\right] \cdot \boldsymbol{d}_i &=\left[\begin{array}{c} a_1\\a_2\\\vdots\\a_M\end{array}\right] \cdot \left[\begin{array}{c} d_{1i}\\d_{2i}\\\vdots\\d_{Mi}\end{array}\right] \\&= \left[\begin{array}{c} d_{11}*x_1 +\cdots d_{1i}*x_1 \cdots + d_{1N}*x_N\\d_{21}*x_1 +\cdots d_{2i}*x_2\cdots + d_{2N}*x_N\\\vdots\quad\vdots\quad\vdots\\d_{M1}*x_1 +\cdots d_{Mi}*x_M \cdots + d_{MN}*x_N\end{array} \right] \cdot\boldsymbol{d}_i \\& = \left(\begin{array}{c} \boldsymbol{d}_{1}*x_1 +\cdots \boldsymbol{d}_{i}*x_2 \cdots + \boldsymbol{d}_{N}*x_N\end{array} \right)\cdot\boldsymbol{d}_i \\&= x_1\boldsymbol{d}_{1} \cdot\boldsymbol{d}_i +\cdots x_2\boldsymbol{d}_{i} \cdot\boldsymbol{d}_i \cdots + x_N\boldsymbol{d}_{N} \cdot\boldsymbol{d}_i \end{aligned} ⎣⎢⎢⎢⎡​a1​a2​⋮aM​​⎦⎥⎥⎥⎤​⋅di​​=⎣⎢⎢⎢⎡​a1​a2​⋮aM​​⎦⎥⎥⎥⎤​⋅⎣⎢⎢⎢⎡​d1i​d2i​⋮dMi​​⎦⎥⎥⎥⎤​=⎣⎢⎢⎢⎡​d11​∗x1​+⋯d1i​∗x1​⋯+d1N​∗xN​d21​∗x1​+⋯d2i​∗x2​⋯+d2N​∗xN​⋮⋮⋮dM1​∗x1​+⋯dMi​∗xM​⋯+dMN​∗xN​​⎦⎥⎥⎥⎤​⋅di​=(d1​∗x1​+⋯di​∗x2​⋯+dN​∗xN​​)⋅di​=x1​d1​⋅di​+⋯x2​di​⋅di​⋯+xN​dN​⋅di​​
很明显字典原子间的点乘取值最大的是 di⋅di\boldsymbol{d}_i\cdot \boldsymbol{d}_idi​⋅di​ ,

因为不是正定方程所以不可能完全正交,即为不能保证 $\boldsymbol{d}_j\cdot \boldsymbol{d}_i = 0, i \neq j ,所以只有在,所以只有在,所以只有在x_i$ 也足够突出的情况下可以在迭代中显示出来,并被MP算法追踪出来。

从向量角度出发讲述为什么能收敛

每次迭代通过公式 Rkfk=<Rkfk,drk+1>drk+1+Rk+1fk+1R_{k} \boldsymbol{f}_k=<R_{k} \boldsymbol{f}_k, \boldsymbol{d}_{r_{k+1}}>\boldsymbol{d}_{r_{k+1}}+R_{k+1} \boldsymbol{f}_{k+1}Rk​fk​=<Rk​fk​,drk+1​​>drk+1​​+Rk+1​fk+1​ 可以看出三个向量构成一个三角形,drk+1\boldsymbol{d}_{r_{k+1}}drk+1​​ 与 Rk+1fk+1R_{k+1} \boldsymbol{f}_{k+1}Rk+1​fk+1​ 正交(不能说垂直,但是可以想象二维空间这两个矢量是垂直的)。

这结论可以得出
∥Rkf∥2=∥Rk+1f∥2+∥<Rkfk,drk+1>drk+1∥2\left\|R_{k} f\right\|^{2}=\left\|R_{k+1} f\right\|^{2}+\| <R_{k} \boldsymbol{f}_k,\boldsymbol{d}_{r_{k+1}} >\boldsymbol{d}_{r_{k+1}}\|^{2} ∥Rk​f∥2=∥Rk+1​f∥2+∥<Rk​fk​,drk+1​​>drk+1​​∥2
所以得出每一个残值比上一次的小,故而收敛。

2.4 MP算法的缺点

如上所述,信号在迭代过程中产生逐渐变小的残值 RkfkR_{k}\boldsymbol{f}_kRk​fk​ ,但是这个残值不能保证满足和已选择的原子是正交的

这会使得每次迭代的结果并不是最优的而是次最优的,收敛需要很多次迭代。数学表示:在第 kkk 次迭代过程中
Rkfk=<Rkfk,drk+1>drk+1+Rk+1fk+1R_{k} \boldsymbol{f}_k=<R_{k} \boldsymbol{f}_k, \boldsymbol{d}_{r_{k+1}}>\boldsymbol{d}_{r_{k+1}}+R_{k+1} \boldsymbol{f}_{k+1} Rk​fk​=<Rk​fk​,drk+1​​>drk+1​​+Rk+1​fk+1​
产生的残差 Rk+1fk+1R_{k+1} \boldsymbol{f}_{k+1}Rk+1​fk+1​ ,虽然与 drk+1\boldsymbol{d}_{r_{k+1}}drk+1​​ 是正交的,但是他与前面的$\boldsymbol{d}{r{0 \sim k}} $不是正交的。

举个例子说明一下:

在二维空间上,有一个信号 X\boldsymbol{X}X 被 D={d1,d2}\boldsymbol{D}=\{\boldsymbol{d}_1, \boldsymbol{d}_2\}D={d1​,d2​} 来表达,MP算法迭代会发现总是在 d1\boldsymbol{d}_1d1​ 和 d2\boldsymbol{d}_2d2​ 上反复迭代,即
A=x1d1+x2d2+x3d1+x4d2⋯\boldsymbol{A} = x_1\boldsymbol{d}_1+x_2\boldsymbol{d}_2+x_3\boldsymbol{d}_1+x_4\boldsymbol{d}_2\cdots A=x1​d1​+x2​d2​+x3​d1​+x4​d2​⋯
这个就是因为残差值与已选择的原子的非正交性导致的。

再用严谨的方式描述,可能容易理解:在Hilbert空间 H\mathbb{H}H 中,D={d1,d2,⋯,dN}\boldsymbol{D} = \{\boldsymbol{d}_1,\boldsymbol{d}_2,\cdots,\boldsymbol{d}_N\}D={d1​,d2​,⋯,dN​} ,D∈RM×N\boldsymbol{D} \in \R^{M\times N}D∈RM×N,定义一个向量 Vk=span⁡{dr0,dr1,⋯,drk−1}‾\boldsymbol{V}_{k}=\overline{\operatorname{span}\left\{\boldsymbol{d}_{r_0}, \boldsymbol{d}_{r_1}, \cdots, \boldsymbol{d}_{r_{k-1}}\right\}}Vk​=span{dr0​​,dr1​​,⋯,drk−1​​}​ , Vk\boldsymbol{V}_kVk​ 就是这些向量的张成中的一个,(在数学中span是扩张空间的意思。就是若干个向量通过线性组合得到的一个向量空间,满足向量空间的所有要求。Span列向量是矩阵中所有的列span成的空间。)

MP迭代到第 kkk 次的压缩信号 A\boldsymbol{A}A 可以表示为:
A=R0f0=∑n=0k<Rnfn,drn>drn+Rk+1fk+1\begin{aligned} \boldsymbol{A}&=R_0\boldsymbol{f}_0 \\ &=\sum_{n=0}^{k}<\boldsymbol{R}_{n} \boldsymbol{f}_n, \boldsymbol{d}_{r_{n}}>\boldsymbol{d}_{r_n} + R_{k+1} \boldsymbol{f}_{k+1} \end{aligned} A​=R0​f0​=n=0∑k​<Rn​fn​,drn​​>drn​​+Rk+1​fk+1​​

为了便于表示设置 Akˇ=∑n=0k<Rnfn,drn>drn\check{\boldsymbol{A}_k} = \sum_{n=0}^{k}<\boldsymbol{R}_{n} \boldsymbol{f}_n, \boldsymbol{d}_{r_{n}}>\boldsymbol{d}_{r_n}Ak​ˇ​=∑n=0k​<Rn​fn​,drn​​>drn​​ ,可以写成如下表达式

A=Akˇ+Rk+1fk+1\begin{aligned} \boldsymbol{A}&=\check{\boldsymbol{A}_k} + R_{k+1} \boldsymbol{f}_{k+1} \end{aligned} A​=Ak​ˇ​+Rk+1​fk+1​​

此时 Akˇ\check{\boldsymbol{A}_k}Ak​ˇ​ 是 kkk 个项的线性表示,MP算法迭代过程中都是保证 drk\boldsymbol{d}_{r_{k}}drk​​ 和 fk+1\boldsymbol{f}_{k+1}fk+1​ 正交,但是如果不能保证 Akˇ\check{\boldsymbol{A}_k}Ak​ˇ​ 和 fk+1\boldsymbol{f}_{k+1}fk+1​ 正交的话, fk+1\boldsymbol{f}_{k+1}fk+1​ 就会含有一些成分分量蕴含于 Aˇk\check{\boldsymbol{A}}_kAˇk​ ,也就是说会含有 ∑n=0k<Rnfn,drn>drn\sum_{n=0}^{k}<R_{n} \boldsymbol{f}_n, \boldsymbol{d}_{r_{n}}>\boldsymbol{d}_{r_n}∑n=0k​<Rn​fn​,drn​​>drn​​ 的分量,会含有 dr0∼k\boldsymbol{d}_{r_{0\sim k}}dr0∼k​​ 的分量,前面的迭代就都不是最优的不能一次性找到最合适的系数表达。

只有当 Akˇ⊥fk+1\check{\boldsymbol{A}_k}\perp \boldsymbol{f}_{k+1}Ak​ˇ​⊥fk+1​ 那么第 k+1k+1k+1 个残值在后面的分解过程中,才不可能出现 Akˇ\check{\boldsymbol{A}_k}Ak​ˇ​ 中已经出现的项,这才是最优的。而一般情况下,不能满足这个条件,MP一般只能满足第 k+1k+1k+1 个残差和 drk\boldsymbol{d}_{r_{k}}drk​​ 正交,也就是残差值在已选择的原子进行垂直投影是非正交性的。

如果第 k+1k+1k+1 个残差 fk+1\boldsymbol{f}_{k+1}fk+1​ 和 Akˇ\check{\boldsymbol{A}_k}Ak​ˇ​ 不正交,那么后面的迭代还会出现 Akˇ\check{\boldsymbol{A}_k}Ak​ˇ​ 中已经出现的项,很显然本次得到的残差就不是最优的,这也就是为什么说MP收敛就需要更多次迭代的原因。不是说MP一定得到不到最优解,而且其前面描述的特性导致一般得到不到最优解而是次优解。

LAST、参考文献

正交匹配追踪_给永远比拿愉快-CSDN博客

匹配追踪算法(MP)简介 - 子孑 - 博客园

压缩感知重构算法之正交匹配追踪(OMP)_彬彬有礼的专栏-CSDN博客_omp

MP算法和OMP算法及其思想_逍遥剑客的专栏-CSDN博客_omp算法

压缩感知重构算法之压缩采样匹配追踪(CoSaMP)_彬彬有礼的专栏-CSDN博客

稀疏分解中的MP与OMP算法 - 云+社区 - 腾讯云

【压缩感知合集8】MP算法(算法实现、收敛讨论以及问题分析)相关推荐

  1. 【压缩感知合集7】压缩感知RIP有限等距性:定义解析,理解说明,数学原理推导

    0 前情提要 0.1 数学模型和总体框图如下 给定输入信号X∈RN×1\boldsymbol{X} \in \mathbb{R}^{N\times1}X∈RN×1,最终想要得到压缩信号A∈RM×1\b ...

  2. 【压缩感知合集5】压缩感知简介和数学模型分析

    1 压缩感知的简介 1.1 提出 D. Donoho.E. Candes 及华裔科学家 T. Tao等人提出了一种新的信息获取理论 - 压缩感知(Compressive Sensing) Donoho ...

  3. 【压缩感知合集6】压缩感知为什么可以恢复信号;为什么需要满足稀疏性条件、RIP条件、矩阵不相关等限制条件才可以恢复信号的逻辑分析

    0 压缩感知的理论依据前言 主要想讲清楚的问题是: 为什么压缩感知在随机采样的情况下可以对信号进行恢复? 其实这个问题也可以换一个方式理解: 在满足什么条件的情况下,信号可以通过压缩感知进行压缩并恢复 ...

  4. 【压缩感知合集3】压缩感知的背景与意义

    [压缩感知合集1](背景知识)香农奈奎斯特采样定理的数学推导和图解分析 [压缩感知合集2](背景知识)信号稀疏表示的数学推导和解释理解 [压缩感知合集3]压缩感知的背景与意义 [压缩感知合集4](背景 ...

  5. 【压缩感知合集1】(背景知识)香农奈奎斯特采样定理的数学推导和图解分析

    [压缩感知合集1](背景知识)香农奈奎斯特采样定理的数学推导和图解分析 [压缩感知合集2](背景知识)信号稀疏表示的数学推导和解释理解 [压缩感知合集3]压缩感知的背景与意义 [压缩感知合集4](背景 ...

  6. python画心形代码大全_Python代码合集看点 机器人算法、自动导航算法算法大全...

    导读:本文包含机器人算法.自动导航算法的Python代码合集.其主要特点有以下三点:选择了在实践中广泛应用的算法:依赖最少.容易阅读,容易理解每个算法的基本思想.希望阅读本文后能对你有所帮助.文章来源 ...

  7. 【合集】智能优化算法与神经网络预测、分类及时间序列优化程序总结

    ⛄ 内容介绍 目录 优化BP神经网络实现时序数据预测系列 优化ElMAN神经网络实现时序数据预测系列 优化RBF神经网络实现时序数据预测系列 优化PNN神经网络实现时序数据预测系列 优化GRNN神经网 ...

  8. 基于压缩感知的心电信号QRS检测算法matlab仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB源码 %********************* ...

  9. 有时间窗车辆路径问题(VRPTW)解决方案合集,[CW节约算法,TS(硬约束版),TS(惩罚函数版),LNS四种方法对比(附MATLAB代码)]

    前言 本文中构造初始解的方式不采用CW法,而是采用论文里说的构造初始解的方法. 然后在调试的过程中发现,自适应调整惩罚权重的策略效果不好,于是稍微更改了一下自适应调整权重的策略:只在解违反约束时,使权 ...

最新文章

  1. 20171101从现在开始就请有计划的学习吧!
  2. sqlserver 运行正則表達式,调用c# 函数、代码
  3. 启动ipython内核发生错误_ipython3启动
  4. hello !CNBLOG
  5. UML学习(一)类图和对象图
  6. 文献查找网站集合(自用)
  7. ElasticSearch + Logstash进行数据库同步
  8. Visual Studio 2017常见用法及相关配置
  9. 矩阵运算_迹的相关性质
  10. vc调用matlab引擎实时绘图,怎么在vc++里调用matlab绘制spline插值曲线
  11. mysql 查询商品列表 显示tag_008商城项目:商品列表查询-查出商品并且分页
  12. 出租车轨迹数据地图匹配
  13. 如何为html代码加密
  14. 浅谈美国ESS音频DAC解码芯片ES9023
  15. XMind思维导图软件导出高清图片的方法
  16. java 异常恢复_Java学习之异常处理
  17. 不论微信钉钉还是什么软件,我写了个通用的消息监控处理机器人
  18. webpack基础篇(三):管理资源(image、css、fonts、csv、json5)
  19. win10系统装机之 环境配置及常用软件官网下载地址 Windows重装 Windows服务器装机
  20. 开源SLAM方案评价与比较

热门文章

  1. java web英语单词系统
  2. 用huggingface.transformers在文本分类任务(单任务和多任务场景下)上微调预训练模型
  3. 一个伪随机数生成算法
  4. 7月27日19:30直播预告:HarmonyOS3及华为全场景新品发布会
  5. html css 微信小程序,tailwindcss 支持微信小程序配置
  6. MATLAB中常用到的绘图函数
  7. c语言用数字代表字母,使用c语言判断数字字母
  8. 2022年iFLYTEKA.I.开发者大赛疫情微博情绪识别挑战赛
  9. python基础运用_python基础知识和运用
  10. 红牛农场JAVA_JAVA内部类与异常类