0 前情提要
0.1 数学模型和总体框图如下
给定输入信号 X ∈ R N × 1 \boldsymbol{X} \in \mathbb{R}^{N\times1} X∈RN×1,最终想要得到压缩信号 A ∈ R M × 1 \boldsymbol{A} \in \mathbb{R}^{M\times1} A∈RM×1, K < < N K<<N K<<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 | 输入信号;待压缩信号 | R N × 1 \mathbb{R}^{N\times1} RN×1 | 未知,需要恢复 |
Φ \boldsymbol{\Phi} Φ | 观测矩阵;测量矩阵 | R M × N \mathbb{R}^{M \times N} RM×N | 已知(非自适应性) |
Ψ \boldsymbol{\Psi} Ψ | 变换矩阵;变换基矩阵;稀疏基矩阵;稀疏矩阵;正交基字典矩阵 | R N × N \mathbb{R}^{N\times N} RN×N | 已知(非自适应性) |
Y \boldsymbol{Y} Y | 正交基变换后的稀疏表示 | R N × 1 \mathbb{R}^{N\times1} RN×1 | 未知,需要恢复 |
Θ \boldsymbol{\Theta} Θ | 感知矩阵,传感矩阵 | R M × N \mathbb{R}^{M\times N} RM×N | 已知(非自适应性) |
A \boldsymbol{A} A | 观测压缩所得到压缩信号 | R M × 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 < < N M<<N M<<N, 已知条件所能构成的方程是欠定的,无法轻易求出数值解的,幸运的是,如果原始信号是稀疏的,那么这个问题可以被很好地解决。
解释一下为什么是欠定的:(
X
\boldsymbol{X}
X 满足的约束如下)
A
=
Ψ
X
[
a
1
⋮
a
M
]
=
[
ψ
11
ψ
12
.
.
.
ψ
1
N
ψ
2
N
ψ
2
N
.
.
.
ψ
2
N
⋮
⋮
⋮
⋮
ψ
M
1
ψ
M
2
.
.
.
ψ
M
N
]
[
x
1
x
2
⋮
x
N
]
\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⎦⎥⎥⎥⎤⎣⎢⎢⎢⎡x1x2⋮xN⎦⎥⎥⎥⎤
实际使用过程中需要求解出
N
N
N 个未知数,但是只有
M
M
M 个方程,未知数的个数远远大于方程的个数。
若 N = M N=M N=M,则可轻松由 A \boldsymbol{A} A解出 X \boldsymbol{X} X和 Y \boldsymbol{Y} Y
而
M
<
<
N
M<<N
M<<N,可根据稀疏表示下的信号
Y
\boldsymbol{Y}
Y和矩阵所具有的RIP性质
重构
一般可以抽象为如下求解任务
min
∥
Ψ
T
X
∥
0
s
.
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∥∥∥0s.t.ΘX=ΦΨX=A
1 正交匹配跟踪算法(OMP)
1.0 问题设置
考虑以下情况,给定 X = [ − 1.2 1 0 ] \boldsymbol{X}=\left[\begin{array}{c}-1.2 \\ 1 \\ 0\end{array}\right] X=⎣⎡−1.210⎦⎤ 和 D = [ − 0.707 0.8 0 0.707 0.6 − 1 ] \boldsymbol{D}=\left[\begin{array}{ccc}-0.707 & 0.8 & 0 \\ 0.707 & 0.6 & -1\end{array}\right] D=[−0.7070.7070.80.60−1] ,
我们可以计算
A
=
D
X
\boldsymbol{A} = \boldsymbol{D}\boldsymbol{X}
A=DX ,这是非常简单地,也就是
A
=
D
X
=
[
−
0.707
0.8
0
0.707
0.6
−
1
]
[
−
1.2
1
0
]
=
[
1.65
−
0.25
]
\boldsymbol{A} = \boldsymbol{D}\boldsymbol{X}=\left[\begin{array}{ccc}-0.707 & 0.8 & 0 \\ 0.707 & 0.6 & -1\end{array}\right]\left[\begin{array}{c}-1.2 \\ 1 \\ 0\end{array}\right]=\left[\begin{array}{c}1.65 \\ -0.25\end{array}\right]
A=DX=[−0.7070.7070.80.60−1]⎣⎡−1.210⎦⎤=[1.65−0.25]
现在让我们介绍比较难的部分,给定
A
=
[
1.65
−
0.25
]
\boldsymbol{A} = \left[\begin{array}{c}1.65 \\ -0.25\end{array}\right]
A=[1.65−0.25] 和
D
=
[
−
0.707
0.8
0
0.707
0.6
−
1
]
\boldsymbol{D}=\left[\begin{array}{ccc}-0.707 & 0.8 & 0 \\ 0.707 & 0.6 & -1\end{array}\right]
D=[−0.7070.7070.80.60−1],如何找到最接近的
X
\boldsymbol{X}
X ?
解释一下为什么是欠定的:
A
=
D
X
[
1.65
−
0.25
]
=
[
−
0.707
0.8
0
0.707
0.6
−
1
]
[
x
1
x
2
x
3
]
\begin{aligned} \boldsymbol{A}&= \boldsymbol{D}\boldsymbol{X}\\ \left[\begin{array}{c}1.65 \\ -0.25\end{array}\right] &= \left[\begin{array}{ccc}-0.707 & 0.8 & 0 \\ 0.707 & 0.6 & -1\end{array}\right]\left[\begin{array}{c}x_1 \\ x_2 \\ x_3\end{array}\right] \end{aligned}
A[1.65−0.25]=DX=[−0.7070.7070.80.60−1]⎣⎡x1x2x3⎦⎤
例子中需要求解出3个未知数,但是只有2个方程
实际使用过程中需要求解的未知数有 N N N 个,但是只有 M M M 个方程,未知数的个数远远大于方程的个数 M < < N M<<N M<<N 。
1.1 步骤描述
输入:字典矩阵 D \boldsymbol{D} D ,采样所得向量 A \boldsymbol{A} A ,稀疏度 K K K
输出: X \boldsymbol{X} X 的 K K K 稀疏逼近 X ˇ \boldsymbol{\check{X}} Xˇ
初始化:残差 f 0 = A \boldsymbol{f}_0=\boldsymbol{A} f0=A ,索引集 Λ 0 = ∅ Λ_0=\varnothing Λ0=∅ , t = 1 t=1 t=1
循环执行步骤1-5:
- 找出残差 f t \boldsymbol{f}_t ft 和字典矩阵的列 d r t \boldsymbol{d}_{r_t} drt 内积中最大值所对应的脚标 r t r_t rt ,即 r i = arg max r t = 1 , ⋯ , N ∣ ⟨ f , d r t ⟩ ∣ r_i=\arg\max_{r_t=1,⋯,N}|\langle\boldsymbol{f},\boldsymbol{d}_{r_t}\rangle| ri=argmaxrt=1,⋯,N∣⟨f,drt⟩∣
- 更新索引集 Λ t = Λ t − 1 ∪ r t Λ_t=Λ_{t−1}∪{r_t} Λt=Λt−1∪rt ,记录找到的字典矩阵中的重建原子集合 D t = [ D t − 1 , d r t ] \boldsymbol{D}_t =\left[ \boldsymbol{D}_{t-1},\boldsymbol{d}_{r_t}\right] Dt=[Dt−1,drt]
- 由最小二乘得到 X ˇ = arg min w ∥ A − D t w ∥ \boldsymbol{\check{X}} = \arg \min_{\boldsymbol{w}}\|\boldsymbol{A}−\boldsymbol{D}_t\boldsymbol{w}\| Xˇ=argminw∥A−Dtw∥
- 更新残差 f t = A − A t X ˇ \boldsymbol{f}_t = \boldsymbol{A}−\boldsymbol{A}_t\boldsymbol{\check{X}} ft=A−AtXˇ , t = t + 1 t=t+1 t=t+1
- 判断是否满足 t > K t>K t>K ,若满足,(或者判断残差的大小)则迭代停止;若不满足,则继续循环
1.2 匹配追踪的概念
这一部分是和MP算法
相同的,正好也在此说明匹配追踪的算法。
字典由一系列基信号或者原子组成的,也就是说
D
=
[
−
0.707
0.8
0
0.707
0.6
−
1
]
=
[
d
1
,
d
2
,
d
3
]
\boldsymbol{D}=\left[\begin{array}{ccc} -0.707 & 0.8 & 0 \\ 0.707 & 0.6 & -1 \end{array}\right]=\left[\begin{array}{c} \boldsymbol{d}_1, \boldsymbol{d}_2, \boldsymbol{d}_3 \end{array}\right]
D=[−0.7070.7070.80.60−1]=[d1,d2,d3]
其中,
d
1
=
[
−
0.707
0.707
]
,
d
2
=
[
0.8
0.6
]
,
d
3
=
[
0
−
1
]
\boldsymbol{d}_1=\left[\begin{array}{c} -0.707 \\ 0.707 \end{array}\right], \quad \boldsymbol{d}_2=\left[\begin{array}{c} 0.8 \\ 0.6 \end{array}\right], \quad \boldsymbol{d}_3=\left[\begin{array}{c} 0 \\ -1 \end{array}\right]
d1=[−0.7070.707],d2=[0.80.6],d3=[0−1]
被称为原子或者基信号。
现在我们将基信号表达出来
A
=
D
X
=
[
−
0.707
0.8
0
0.707
0.6
−
1
]
[
x
1
x
2
x
3
]
=
[
x
1
d
1
,
x
2
d
2
,
x
3
d
3
]
=
[
−
0.707
0.707
]
x
1
+
[
0.8
0.6
]
x
2
+
[
0
−
1
]
x
3
\begin{aligned} \boldsymbol{A} &= \boldsymbol{D}\boldsymbol{X}=\left[\begin{array}{ccc}-0.707 & 0.8 & 0 \\0.707 & 0.6 & -1\end{array}\right] \left[\begin{array}{c}x_1 \\ x_2 \\ x_3 \end{array}\right] =\left[\begin{array}{c} x_1\boldsymbol{d}_1, x_2\boldsymbol{d}_2, x_3\boldsymbol{d}_3 \end{array}\right]\\ &=\left[\begin{array}{c}-0.707 \\0.707\end{array}\right]x_1+ \left[\begin{array}{c}0.8 \\0.6\end{array}\right]x_2+ \left[\begin{array}{c}0 \\-1\end{array}\right]x_3 \end{aligned}
A=DX=[−0.7070.7070.80.60−1]⎣⎡x1x2x3⎦⎤=[x1d1,x2d2,x3d3]=[−0.7070.707]x1+[0.80.6]x2+[0−1]x3
上面的方程说明了
A
\boldsymbol{A}
A 是
D
\boldsymbol{D}
D 中原子的线性组合,而线性组合系数恰好是
X
\boldsymbol{X}
X 。实际上,我们知道
x
1
=
−
1.2
,
x
2
=
1
,
x
3
=
0
x_1=-1.2, x_2=1, x_3=0
x1=−1.2,x2=1,x3=0 ,换句话说原子
d
1
\boldsymbol{d}_1
d1 对于
A
\boldsymbol{A}
A 贡献了
−
1.2
-1.2
−1.2 ,
d
2
\boldsymbol{d}_2
d2 对于
A
\boldsymbol{A}
A 贡献了
1
1
1 ,
d
3
\boldsymbol{d}_3
d3 对于
A
\boldsymbol{A}
A 贡献了
0
0
0 。
MP算法
和OMP算法
要找到对
A
\boldsymbol{A}
A 贡献最大的那个原子,然后是贡献次之的原子,一直进行到贡献最小的原子。
第一步:求取最大相关
在矩阵A中有三个原子,
d
1
=
[
−
0.707
0.707
]
,
d
2
=
[
0.8
0.6
]
,
d
3
=
[
0
−
1
]
\boldsymbol{d}_1=\left[\begin{array}{c}-0.707 \\0.707\end{array}\right], \quad \boldsymbol{d} 2=\left[\begin{array}{c}0.8 \\0.6\end{array}\right], \quad \boldsymbol{d} 3=\left[\begin{array}{c}0 \\-1\end{array}\right]
d1=[−0.7070.707],d2=[0.80.6],d3=[0−1]
压缩信号
A
=
[
1.65
−
0.25
]
\boldsymbol{A} = \left[\begin{array}{c}1.65 \\ -0.25\end{array}\right]
A=[1.65−0.25]
我们计算每个原子对于
A
\boldsymbol{A}
A 的贡献(主要是点乘计算投影的大小)
⟨
d
1
,
A
⟩
=
[
−
0.707
0.707
]
[
1.65
−
0.25
]
=
−
0.707
×
1.65
+
0.707
×
(
−
0.25
)
=
−
1.34
⟨
d
2
,
A
⟩
=
[
0.8
0.6
]
[
1.65
−
0.25
]
=
0.8
×
1.65
+
0.6
×
(
−
0.25
)
=
1.17
⟨
d
3
,
A
⟩
=
[
0
−
1
]
[
1.65
−
0.25
]
=
0
×
1.65
+
(
−
1
)
×
(
−
0.25
)
=
0.25
\begin{aligned} \langle \boldsymbol{d}_1, \boldsymbol{A}\rangle &=\left[\begin{array}{c} -0.707 \\0.707\end{array}\right]\left[\begin{array}{c}1.65 \\-0.25\end{array}\right]=-0.707 \times 1.65+0.707 \times(-0.25)=-1.34\\ \langle \boldsymbol{d}_2, \boldsymbol{A}\rangle&=\left[\begin{array}{c}0.8 \\0.6\end{array}\right]\left[\begin{array}{c}1.65 \\-0.25 \end{array}\right]=0.8 \times 1.65+0.6 \times(-0.25)=1.17\\ \langle \boldsymbol{d}_3, \boldsymbol{A}\rangle&=\left[\begin{array}{c}0 \\-1\end{array}\right]\left[\begin{array}{c}1.65 \\-0.25 \end{array}\right]=0 \times 1.65+(-1) \times(-0.25)=0.25 \end{aligned}
⟨d1,A⟩⟨d2,A⟩⟨d3,A⟩=[−0.7070.707][1.65−0.25]=−0.707×1.65+0.707×(−0.25)=−1.34=[0.80.6][1.65−0.25]=0.8×1.65+0.6×(−0.25)=1.17=[0−1][1.65−0.25]=0×1.65+(−1)×(−0.25)=0.25
根据上述结果,可以看出
d
1
\boldsymbol{d}_1
d1 对于
A
\boldsymbol{A}
A 的贡献最大,值为
−
1.34
-1.34
−1.34 (这里只考虑大小,不用管负号,负号只是代表方向相反。我也想说下自己对于这块的理解,这里使用的是点积(内积),求的是
A
\boldsymbol{A}
A 和
D
\boldsymbol{D}
D 中每个原子的相关性)。当然也可以使用一步矩阵相乘直接计算出贡献
w
=
D
T
A
=
[
−
0.707
0.707
0.8
0.6
0
−
1
]
[
1.65
−
0.25
]
=
[
−
1.34
1.17
0.25
]
\boldsymbol{w} =\boldsymbol{D}^{T} \boldsymbol{A}=\left[\begin{array}{ccc} -0.707 & 0.707 \\ 0.8 & 0.6 \\ 0 & -1 \end{array}\right]\left[\begin{array}{c} 1.65 \\ -0.25 \end{array}\right]=\left[\begin{array}{c} -1.34 \\ 1.17 \\ 0.25 \end{array}\right]
w=DTA=⎣⎡−0.7070.800.7070.6−1⎦⎤[1.65−0.25]=⎣⎡−1.341.170.25⎦⎤
可以得到相同的结果,下图展示了
D
\boldsymbol{D}
D 中的原子
d
1
,
d
2
,
d
3
\boldsymbol{d}_1,\boldsymbol{d}_2,\boldsymbol{d}_3
d1,d2,d3 和
A
\boldsymbol{A}
A ,从图中可以看出来
d
1
\boldsymbol{d}_1
d1 的负向和
A
\boldsymbol{A}
A 是最接近的,意味着贡献最大最相关。
第二步:求取残差
根据上一节中的计算结果,我们选择贡献最大的原子
d
1
=
[
−
0.707
0.707
]
\boldsymbol{d}_1=\left[\begin{array}{c}-0.707 \\0.707\end{array}\right]
d1=[−0.7070.707] ,相关的系数是
⟨
d
1
,
A
⟩
=
−
1.34
\langle \boldsymbol{d}_1, \boldsymbol{A}\rangle=-1.34
⟨d1,A⟩=−1.34 ,如果我们从
A
\boldsymbol{A}
A 中减去,那么剩余的残差是
f
=
A
−
⟨
d
1
,
A
⟩
d
1
=
[
1.65
−
0.25
]
−
(
−
1.34
)
[
−
0.707
0.707
]
=
[
0.7
0.7
]
\boldsymbol{f}=\boldsymbol{A}-\langle \boldsymbol{d}_1, \boldsymbol{A}\rangle \boldsymbol{d}_1=\left[\begin{array}{c} 1.65 \\-0.25\end{array}\right]-(-1.34)\left[\begin{array}{c}-0.707 \\0.707\end{array}\right]=\left[\begin{array}{c}0.7 \\0.7\end{array}\right]
f=A−⟨d1,A⟩d1=[1.65−0.25]−(−1.34)[−0.7070.707]=[0.70.7]
那么所得的残差由什么意义呢?从
A
\boldsymbol{A}
A 中减去了所有与原子
d
1
\boldsymbol{d}_1
d1 有关的信息,为什么说是所有呢,因为刚才计算的系数同时也代表着投影的意义,
A
\boldsymbol{A}
A 减去这个长度的投影,所剩残差
f
\boldsymbol{f}
f 与
d
1
\boldsymbol{d}_1
d1 正交,也表示残差不能再由
d
1
\boldsymbol{d}_1
d1 线性表示。
第三步: 重复迭代
在第一次迭代时,我们选择了原子
d
1
\boldsymbol{d}_1
d1 ,将其作为一个基放入新的压缩矩阵
D
new
\boldsymbol{D}_\text{new}
Dnew 中,也就是
D
new
=
[
d
1
]
=
[
−
0.707
0.707
]
\boldsymbol{D}_{\text{new}}=[\boldsymbol{d}_1]=\left[\begin{array}{c}-0.707 \\0.707\end{array}\right]
Dnew=[d1]=[−0.7070.707] ,并且将贡献系数写入到重构信号
X
ˇ
\boldsymbol{\check{X}}
Xˇ 中,
X
ˇ
=
[
−
1.34
0
0
]
\boldsymbol{\check{X}}=\left[\begin{array}{c}-1.34 \\0 \\0\end{array}\right]
Xˇ=⎣⎡−1.3400⎦⎤ ,
−
1.34
-1.34
−1.34 被放置到第一个元素的位置是因为这个贡献系数来自于
D
\boldsymbol{D}
D 中的第一个基
d
1
\boldsymbol{d}_1
d1 。残差
f
\boldsymbol{f}
f 计算为
f
=
[
0.7
0.7
]
\boldsymbol{f}=\left[\begin{array}{c}0.7 \\0.7\end{array}\right]
f=[0.70.7] 。现在我们要从剩余的原子
d
2
\boldsymbol{d}_2
d2 或者
d
3
\boldsymbol{d}_3
d3 中选择出对残差贡献最大的,
w
=
[
d
2
d
3
]
T
f
=
[
0.8
0.6
0
−
1
]
[
0.7
0.7
]
=
[
0.98
−
0.7
]
\boldsymbol{w}=\left[\begin{array}{ccc}\boldsymbol{d}_2 & \boldsymbol{d}_3\end{array}\right]^{T} \boldsymbol{f}=\left[\begin{array}{cc}0.8 & 0.6 \\0 & -1\end{array}\right]\left[\begin{array}{l}0.7 \\0.7\end{array}\right]=\left[\begin{array}{c}0.98 \\-0.7\end{array}\right]
w=[d2d3]Tf=[0.800.6−1][0.70.7]=[0.98−0.7]
由于
f
2
\boldsymbol{f}_2
f2 的贡献比较大(
0.98
>
0.7
0.98>0.7
0.98>0.7,忽略负号),所以选择
f
2
\boldsymbol{f}_2
f2 。
现在我们将已经选择了的基
d
1
,
d
2
\boldsymbol{d}_1,\boldsymbol{d}_2
d1,d2 都放到新的压缩矩阵中
D
new
\boldsymbol{D}_{\text{new}}
Dnew ,
D
new
=
[
d
1
d
2
]
=
[
−
0.707
0.8
0.707
0.6
]
\boldsymbol{D}_{\text{new}}=\left[\begin{array}{cc} \boldsymbol{d}_1 & \boldsymbol{d}_2 \end{array}\right]=\left[\begin{array}{cc} -0.707 & 0.8 \\ 0.707 & 0.6 \end{array}\right]
Dnew=[d1d2]=[−0.7070.7070.80.6]
第四步:与MP算法不同的OMP算法细节
接下来这一步是与之前提出的另一种方法匹配跟踪算法
不同的地方,
计算
D
new
\boldsymbol{D}_{\text{new}}
Dnew 对于
A
\boldsymbol{A}
A 的贡献,得到系数(而不是MP
中的做法,计算
d
r
2
\boldsymbol{d}_{r_2}
dr2 ,此时
d
r
2
即
为
d
2
\boldsymbol{d}_{r_2}即为\boldsymbol{d}_{2}
dr2即为d2 对残差的贡献,得到系数)。为了得到OMP
的新系数,OMP
会去解一个最小二乘问题,如下
w
1
⋅
[
−
0.707
0.707
]
+
w
2
⋅
[
0.8
0.6
]
as close as possible to
y
=
[
1.65
−
0.25
]
w_{1} \cdot\left[\begin{array}{c} -0.707 \\ 0.707 \end{array}\right]+w_{2} \cdot\left[\begin{array}{c} 0.8 \\ 0.6 \end{array}\right] \text { as close as possible to } y=\left[\begin{array}{c} 1.65 \\ -0.25 \end{array}\right]
w1⋅[−0.7070.707]+w2⋅[0.80.6] as close as possible to y=[1.65−0.25]
写成数学公式如下:
min
∥
D
new
w
−
A
∥
2
\min \left\|\boldsymbol{D}_{\text{new}} \boldsymbol{w}-\boldsymbol{A}\right\|_{2}
min∥Dneww−A∥2
在这个例子中,
min
∥
[
−
0.707
0.8
0.707
0.6
]
⋅
[
w
1
w
2
]
−
[
1.65
−
0.25
]
∥
2
\min \left\|\left[\begin{array}{cc} -0.707 & 0.8 \\ 0.707 & 0.6 \end{array}\right] \cdot\left[\begin{array}{c} w_{1} \\ w_{2} \end{array}\right]-\left[\begin{array}{c} 1.65 \\ -0.25 \end{array}\right]\right\|_{2}
min∥∥∥∥[−0.7070.7070.80.6]⋅[w1w2]−[1.65−0.25]∥∥∥∥2
得到
w
1
,
w
2
w_{1} ,w_{2}
w1,w2 。我们知道
min
∥
D
new
w
−
A
∥
2
\min \left\|\boldsymbol{D}_{\text{new}} \boldsymbol{w}-\boldsymbol{A}\right\|_{2}
min∥Dneww−A∥2
的解是
w
=
D
new
+
A
\boldsymbol{w}= \boldsymbol{D}_{\text{new}}^{+} \boldsymbol{A}
w=Dnew+A ,其中是
D
new
+
\boldsymbol{D}_{\text{new}}^{+}
Dnew+ 是
D
new
\boldsymbol{D}_{\text{new}}
Dnew 的伪逆,也就是说
D
n
e
w
+
=
(
D
n
e
w
T
D
n
e
w
)
−
1
D
n
e
w
T
\boldsymbol{D}_{new}^{+}=\left(\boldsymbol{D}_{new}^{T} \boldsymbol{D}_{new}\right)^{-1} \boldsymbol{D}_{new}^{T}
Dnew+=(DnewTDnew)−1DnewT ,在我们这个例子中
D
n
e
w
+
=
[
−
0.707
0.8
0.707
0.6
]
+
=
[
−
0.6062
0.8082
0.7143
0.7143
]
\boldsymbol{D}_{n e w}^{+}=\left[\begin{array}{cc} -0.707 & 0.8 \\ 0.707 & 0.6 \end{array}\right]^{+}=\left[\begin{array}{cc} -0.6062 & 0.8082 \\ 0.7143 & 0.7143 \end{array}\right]
Dnew+=[−0.7070.7070.80.6]+=[−0.60620.71430.80820.7143]
可以在MATLAB
中使用pinv()
来计算伪逆。计算完伪逆之后,我们得到了
w
=
D
new
+
A
=
[
−
0.6062
0.8082
0.7143
0.7143
]
[
1.65
−
0.25
]
≈
[
−
1.2
1
]
\boldsymbol{w}=\boldsymbol{D}_\text{new}^{+}\boldsymbol{A}=\left[\begin{array}{cc} -0.6062 & 0.8082 \\ 0.7143 & 0.7143 \end{array}\right]\left[\begin{array}{c} 1.65 \\ -0.25 \end{array}\right]\thickapprox\left[\begin{array}{c} -1.2 \\ 1 \end{array}\right]
w=Dnew+A=[−0.60620.71430.80820.7143][1.65−0.25]≈[−1.21]
在得到更新后的
D
new
\boldsymbol{D}_{\text{new}}
Dnew 和
w
\boldsymbol{w}
w ,我们更新残差
f
=
A
−
D
new
⋅
w
≈
[
1.65
−
0.25
]
−
[
−
0.707
0.8
0.707
0.6
]
[
−
1.2
1
]
≈
[
0
0
]
\boldsymbol{f}=\boldsymbol{A}-\boldsymbol{D}_\text{new}\cdot \boldsymbol{w}\thickapprox\left[\begin{array}{c} 1.65 \\ -0.25 \end{array}\right]-\left[\begin{array}{cc} -0.707 & 0.8 \\ 0.707 & 0.6 \end{array}\right]\left[\begin{array}{c} -1.2 \\ 1 \end{array}\right]\thickapprox\left[\begin{array}{l} 0 \\ 0 \end{array}\right]
f=A−Dnew⋅w≈[1.65−0.25]−[−0.7070.7070.80.6][−1.21]≈[00]
现在我们得到的残差约等于
0
0
0 ,所以停止迭代。
我们将得到的
w
1
,
w
2
w_{1} ,w_{2}
w1,w2 分别放入
X
ˇ
\boldsymbol{\check{X}}
Xˇ 中第一和第二个位置,因为它们分别对应了我们选择的第一和第二个原子。接着更新重构信号
X
ˇ
=
[
−
1.2
1
0
]
\boldsymbol{\check{X}}=\left[\begin{array}{c} -1.2 \\ 1 \\ 0 \end{array}\right]
Xˇ=⎣⎡−1.210⎦⎤
第五步 最后一次迭代
因为残差已经为
0
0
0 ,所以这一步并不是必须的。许多OMP算法
需要设置一个关于信号稀疏性的参数
K
K
K ,这告诉算法它需要迭代
K
K
K 次,即使残差为
0
0
0 ,也需要迭代
K
K
K 次。
1.3 第二个例子说明
给定
X
=
[
0
3
1
2
]
\boldsymbol{X}=\left[\begin{array}{c}0\\3 \\1 \\2\end{array}\right]
X=⎣⎢⎢⎡0312⎦⎥⎥⎤ 和
D
=
[
−
0.8
0.3
1
0.4
−
0.2
0.4
−
0.3
−
0.4
0.2
1
−
0.1
0.8
]
\boldsymbol{D}=\left[\begin{array}{cccc}-0.8 & 0.3 & 1 & 0.4 \\-0.2 & 0.4 & -0.3 & -0.4 \\0.2 & 1 & -0.1 & 0.8\end{array}\right]
D=⎣⎡−0.8−0.20.20.30.411−0.3−0.10.4−0.40.8⎦⎤ ,有压缩信号
A
=
D
X
=
[
2.7
0.1
4.5
]
\boldsymbol{A}=\boldsymbol{D} \boldsymbol{X}=\left[\begin{array}{l}2.7 \\0.1 \\4.5\end{array}\right]
A=DX=⎣⎡2.70.14.5⎦⎤ ,现在给定
A
\boldsymbol{A}
A 和
D
\boldsymbol{D}
D ,使用OMP算法
求解
X
\boldsymbol{X}
X。
有4个基(原子):
d
1
=
[
−
0.8
−
0.2
0.2
]
d
2
=
[
0.3
0.4
1
]
d
3
=
[
1
−
0.3
−
0.1
]
d
4
=
[
0.4
−
0.4
0.8
]
\boldsymbol{d}_{1}=\left[\begin{array}{c} -0.8 \\ -0.2 \\ 0.2 \end{array}\right] \quad \boldsymbol{d}_{2}=\left[\begin{array}{c} 0.3 \\ 0.4 \\ 1 \end{array}\right] \quad \boldsymbol{d}_{3}=\left[\begin{array}{c} 1 \\ -0.3 \\ -0.1 \end{array}\right] \quad \boldsymbol{d}_{4}=\left[\begin{array}{c} 0.4 \\ -0.4 \\ 0.8 \end{array}\right]
d1=⎣⎡−0.8−0.20.2⎦⎤d2=⎣⎡0.30.41⎦⎤d3=⎣⎡1−0.3−0.1⎦⎤d4=⎣⎡0.4−0.40.8⎦⎤
由于基向量的长度不是
1
1
1 ,所以我们首先进行标准化,实现字典矩阵的标准化
D
→
D
^
=
[
d
1
^
d
2
^
d
3
^
d
4
^
]
\boldsymbol{D} \rightarrow \hat{\boldsymbol{D}}=\left[\hat{\boldsymbol{d_1}}\hat{\boldsymbol{d_2}}\hat{\boldsymbol{d_3}}\hat{\boldsymbol{d_4}}\right]
D→D^=[d1^d2^d3^d4^] 。
d 1 ^ = d 1 / ∥ d 1 ∥ = [ − 0.8 − 0.2 0.2 ] / ( − 0.8 ) 2 + ( − 0.4 ) 2 + ( 0.2 ) 2 = [ − 0.9428 − 0.2357 0.2357 ] \hat{\boldsymbol{d}_{1}}=\boldsymbol{d}_{1} /\left\|\boldsymbol{d}_{1}\right\|=\left[\begin{array}{c} -0.8 \\ -0.2 \\ 0.2 \end{array}\right] / \sqrt{(-0.8)^{2}+(-0.4)^{2}+(0.2)^{2}}=\left[\begin{array}{c} -0.9428 \\ -0.2357 \\ 0.2357 \end{array}\right] d1^=d1/∥d1∥=⎣⎡−0.8−0.20.2⎦⎤/(−0.8)2+(−0.4)2+(0.2)2=⎣⎡−0.9428−0.23570.2357⎦⎤
d 2 ^ = d 2 / ∥ d 2 ∥ = [ 0.2680 0.3578 0.8940 ] \hat{\boldsymbol{d}_{2}}=\boldsymbol{d}_{2} /\left\|\boldsymbol{d}_{2}\right\|=\left[\begin{array}{c} 0.2680 \\ 0.3578 \\ 0.8940 \end{array}\right] \\ d2^=d2/∥d2∥=⎣⎡0.26800.35780.8940⎦⎤
d 3 ^ = d 3 / ∥ d 3 ∥ = [ 0.9535 − 0.2860 0.0953 ] \hat{\boldsymbol{d}_{3}}=\boldsymbol{d}_{3} /\left\|\boldsymbol{d}_{3}\right\|=\left[\begin{array}{c} 0.9535 \\ -0.2860 \\ 0.0953 \end{array}\right] \\ d3^=d3/∥d3∥=⎣⎡0.9535−0.28600.0953⎦⎤
d 4 ^ = d 4 / ∥ d 4 ∥ = [ 0.4082 − 0.4082 − 0.8165 ] \hat{\boldsymbol{d}_{4}}=\boldsymbol{d}_{4} /\left\|\boldsymbol{d}_{4}\right\|=\left[\begin{array}{c} 0.4082 \\ -0.4082 \\ -0.8165 \end{array}\right] d4^=d4/∥d4∥=⎣⎡0.4082−0.4082−0.8165⎦⎤
标准化的字典基向量
d
r
i
\boldsymbol{d}_{r_{i}}
dri 对
A
\boldsymbol{A}
A 的贡献
D
^
T
⋅
A
=
[
−
0.9428
0.2680
0.9535
0.4082
−
0.2357
0.3578
−
0.2860
−
0.4082
0.2357
0.9840
−
0.0953
−
0.8165
]
T
⋅
[
2.7
0.1
4.5
]
=
[
−
1.5085
4.7852
2.1167
4.7357
]
\begin{aligned} \hat{\boldsymbol{D}}^{\mathrm{T}} \cdot \boldsymbol{A}&=\left[\begin{array}{cccc} -0.9428 & 0.2680 & 0.9535 & 0.4082 \\ -0.2357 & 0.3578 & -0.2860 & -0.4082 \\ 0.2357 & 0.9840 & -0.0953 & -0.8165 \end{array}\right]^{\mathrm{T}} \cdot\left[\begin{array}{c} 2.7 \\ 0.1 \\ 4.5 \end{array}\right] \\ &=\left[\begin{array}{c} -1.5085 \\ 4.7852 \\ 2.1167 \\ 4.7357 \end{array}\right] \end{aligned}
D^T⋅A=⎣⎡−0.9428−0.23570.23570.26800.35780.98400.9535−0.2860−0.09530.4082−0.4082−0.8165⎦⎤T⋅⎣⎡2.70.14.5⎦⎤=⎣⎢⎢⎡−1.50854.78522.11674.7357⎦⎥⎥⎤
第二个基向量
d
2
^
\hat{\boldsymbol{d_2}}
d2^ 贡献值最大,所以将
d
2
\boldsymbol{d_2}
d2 加入到
D
new
\boldsymbol{D}_\text{new}
Dnew中,
D
new
=
[
d
2
]
=
[
0.3
0.4
1
]
\boldsymbol{D}_\text{new} = \left[\boldsymbol{d}_2\right] = \left[\begin{array}{c} 0.3 \\ 0.4 \\ 1 \end{array}\right]
Dnew=[d2]=⎣⎡0.30.41⎦⎤
利用最小二乘法计算
w
\boldsymbol{w}
w
min
∥
D
new
w
−
A
∥
2
=
min
∥
d
2
w
1
−
A
∥
2
\min \left\|\boldsymbol{D}_{\text{new}} \boldsymbol{w}-\boldsymbol{A}\right\|_{2} = \min \left\|\boldsymbol{d}_{2} w_1-\boldsymbol{A}\right\|_{2}
min∥Dneww−A∥2=min∥d2w1−A∥2
也就是求解
w
1
=
D
new
+
A
=
4.28
w_1 = \boldsymbol{D}_\text{new}^{+}\boldsymbol{A} = 4.28
w1=Dnew+A=4.28
因为 w 1 w_1 w1 对应着第二个基向量 d 2 \boldsymbol{d}_2 d2 ,所以 X ˇ = [ 0 4.28 0 0 ] \boldsymbol{\check{X}}=\left[\begin{array}{c}0\\4.28 \\0 \\0\end{array}\right] Xˇ=⎣⎢⎢⎡04.2800⎦⎥⎥⎤
接下来计算残差
f
=
A
−
D
new
⋅
w
=
[
2.7
0.1
4.5
]
−
[
0.3
0.4
1
]
⋅
4.28
=
[
1.416
−
1.612
0.22
]
\boldsymbol{f}=\boldsymbol{A}-\boldsymbol{D}_{\text {new }} \cdot \boldsymbol{w}=\left[\begin{array}{l} 2.7 \\ 0.1 \\ 4.5 \end{array}\right]-\left[\begin{array}{c} 0.3 \\ 0.4 \\ 1 \end{array}\right] \cdot 4.28=\left[\begin{array}{c} 1.416 \\ -1.612 \\ 0.22 \end{array}\right]
f=A−Dnew ⋅w=⎣⎡2.70.14.5⎦⎤−⎣⎡0.30.41⎦⎤⋅4.28=⎣⎡1.416−1.6120.22⎦⎤
接下来重复计算
d
1
^
,
d
3
^
,
d
4
^
\hat{\boldsymbol{d}_1},\hat{\boldsymbol{d}_3},\hat{\boldsymbol{d}_4}
d1^,d3^,d4^ 对
f
\boldsymbol{f}
f 的贡献
[
d
1
^
d
3
^
d
4
^
]
T
⋅
f
=
[
−
0.9428
0.9535
0.4082
−
0.2357
−
0.2860
−
0.4082
0.2357
−
0.0953
−
0.8165
]
T
⋅
[
1.416
−
1.612
0.22
]
=
[
−
0.9032
1.7902
1.4158
]
\left[\hat{\boldsymbol{d}_1}\hat{\boldsymbol{d}_3}\hat{\boldsymbol{d}_4}\right]^{\mathrm{T}} \cdot \boldsymbol{f}=\left[\begin{array}{ccc} -0.9428 & 0.9535 & 0.4082 \\ -0.2357 & -0.2860 & -0.4082 \\ 0.2357 & -0.0953 & -0.8165 \end{array}\right]^{\mathrm{T}} \cdot\left[\begin{array}{c} 1.416 \\ -1.612 \\ 0.22 \end{array}\right]=\left[\begin{array}{c} -0.9032 \\ 1.7902 \\ 1.4158 \end{array}\right]
[d1^d3^d4^]T⋅f=⎣⎡−0.9428−0.23570.23570.9535−0.2860−0.09530.4082−0.4082−0.8165⎦⎤T⋅⎣⎡1.416−1.6120.22⎦⎤=⎣⎡−0.90321.79021.4158⎦⎤
选择第二个贡献最大的基
d
3
^
\hat{\boldsymbol{d}_3}
d3^ ,其贡献值为
1.7902
1.7902
1.7902
将选择的 d 3 \boldsymbol{d}_3 d3 加入到 D new \boldsymbol{D}_\text{new} Dnew 中, D new = [ d 2 d 3 ] \boldsymbol{D}_\text{new} = \left[\boldsymbol{d}_2\boldsymbol{d}_3\right] Dnew=[d2d3]
用最小二乘法计算 w = D new + ⋅ A = [ 4.1702 1.7149 ] \boldsymbol{w}=\boldsymbol{D}_\text{new}^{+} \cdot \boldsymbol{A}=\left[\begin{array}{l}4.1702 \\ 1.7149\end{array}\right] w=Dnew+⋅A=[4.17021.7149]
这个 w \boldsymbol{w} w 对应着 d 2 \boldsymbol{d}_2 d2 和 d 3 \boldsymbol{d}_3 d3 ,因此 X ˇ = [ 0 4.1702 1.7149 0 ] \boldsymbol{\check{X}}=\left[\begin{array}{c}0\\4.1702 \\1.7149 \\0\end{array}\right] Xˇ=⎣⎢⎢⎡04.17021.71490⎦⎥⎥⎤
接着计算残差
f
=
A
−
D
new
⋅
w
=
[
2.7
0.1
4.5
]
−
[
0.3
1
0.4
−
0.3
1
−
0.1
]
⋅
[
4.172
1.7149
]
=
[
−
0.266
−
1.0536
0.5012
]
\boldsymbol{f}=\boldsymbol{A}-\boldsymbol{D}_\text{new} \cdot\boldsymbol{w}=\left[\begin{array}{l}2.7 \\ 0.1 \\ 4.5\end{array}\right]-\left[\begin{array}{cc}0.3 & 1 \\ 0.4 & -0.3 \\ 1 & -0.1\end{array}\right] \cdot\left[\begin{array}{c}4.172 \\ 1.7149\end{array}\right]=\left[\begin{array}{c}-0.266 \\ -1.0536 \\ 0.5012\end{array}\right]
f=A−Dnew⋅w=⎣⎡2.70.14.5⎦⎤−⎣⎡0.30.411−0.3−0.1⎦⎤⋅[4.1721.7149]=⎣⎡−0.266−1.05360.5012⎦⎤
重复计算
d
1
^
,
d
4
^
\hat{\boldsymbol{d}_1},\hat{\boldsymbol{d}_4}
d1^,d4^ 对
f
\boldsymbol{f}
f 的贡献
[
d
1
^
d
4
^
]
⋅
f
=
[
−
0.9428
0.4082
−
0.2357
−
0.4082
0.2357
−
0.8165
]
T
⋅
[
−
0.266
−
1.0536
0.5012
]
=
[
0.6172
0.7308
]
\left[\hat{\boldsymbol{d}_1} \hat{\boldsymbol{d}_4}\right] \cdot \boldsymbol{f} =\left[\begin{array}{cc}-0.9428 & 0.4082 \\ -0.2357 & -0.4082 \\ 0.2357 & -0.8165\end{array}\right]^{\mathrm{T}} \cdot\left[\begin{array}{c}-0.266 \\ -1.0536 \\ 0.5012\end{array}\right]=\left[\begin{array}{l}0.6172 \\ 0.7308\end{array}\right]
[d1^d4^]⋅f=⎣⎡−0.9428−0.23570.23570.4082−0.4082−0.8165⎦⎤T⋅⎣⎡−0.266−1.05360.5012⎦⎤=[0.61720.7308]
选择第三个贡献最大的基
d
4
^
\hat{\boldsymbol{d}_4}
d4^ ,其贡献值为
0.7308
0.7308
0.7308
将 d 4 \boldsymbol{d}_4 d4 加入到 D new \boldsymbol{D}_\text{new} Dnew 中, D new = [ d 2 d 3 d 4 ] \boldsymbol{D}_\text{new} = \left[\boldsymbol{d}_2 \boldsymbol{d}_3\boldsymbol{d}_4\right] Dnew=[d2d3d4]
利用最小二乘计算权重
w
=
D
new
+
⋅
A
=
[
3
2
1
]
\boldsymbol{w} = \boldsymbol{D}_{\text {new}}^{+} \cdot \boldsymbol{A}=\left[\begin{array}{l} 3 \\ 2 \\ 1 \end{array}\right]
w=Dnew+⋅A=⎣⎡321⎦⎤
这个
w
\boldsymbol{w}
w 对应着
d
2
,
d
3
\boldsymbol{d}_2,\boldsymbol{d}_3
d2,d3 和
d
4
\boldsymbol{d}_4
d4 ,因此
X
ˇ
=
[
0
3
1
2
]
\boldsymbol{\check{X}}=\left[\begin{array}{c}0\\3 \\1 \\2\end{array}\right]
Xˇ=⎣⎢⎢⎡0312⎦⎥⎥⎤
接着计算残差
f
=
A
−
D
new
⋅
w
=
[
2.7
0.1
4.5
]
−
[
0.3
1
0.4
0.4
−
0.3
−
0.4
1
−
0.1
0.8
]
⋅
[
3
1
2
]
=
[
0
0
0
]
\boldsymbol{f}=\boldsymbol{A}-\boldsymbol{D}_\text{new} \cdot \boldsymbol{w}=\left[\begin{array}{c} 2.7 \\ 0.1 \\ 4.5 \end{array}\right]-\left[\begin{array}{ccc} 0.3 & 1 & 0.4 \\ 0.4 & -0.3 & -0.4 \\ 1 & -0.1 & 0.8 \end{array}\right] \cdot\left[\begin{array}{l} 3 \\ 1 \\ 2 \end{array}\right]=\left[\begin{array}{l} 0 \\ 0 \\ 0 \end{array}\right]
f=A−Dnew⋅w=⎣⎡2.70.14.5⎦⎤−⎣⎡0.30.411−0.3−0.10.4−0.40.8⎦⎤⋅⎣⎡312⎦⎤=⎣⎡000⎦⎤
迭代到此为止,因为此时残差已经为
0
0
0 ,重建的
X
\boldsymbol{X}
X 为
X
ˇ
=
[
0
3
1
2
]
\boldsymbol{\check{X}}=\left[\begin{array}{c}0\\3 \\1 \\2\end{array}\right]
Xˇ=⎣⎢⎢⎡0312⎦⎥⎥⎤ ,和原来的信号相同。
2 注意事项
- 在计算最大贡献的时候,字典矩阵 D \boldsymbol{D} D 中的原子应当是归一化后的,而不是使用归一化前的原子。
- 在计算贡献时,计算的是残差 f \boldsymbol{f} f 与矩阵 D \boldsymbol{D} D 中每个归一化的原子的点积。
- 在
匹配跟踪算法
中,重构信号 X ˇ \boldsymbol{\check{X}} Xˇ 是通过计算字典基信号 d r i \boldsymbol{d}_{r_i} dri 和残差 f \boldsymbol{f} f 的点积得到的,对于正交匹配跟踪算法
,重构信号 X ˇ \boldsymbol{\check{X}} Xˇ 是通过计算最小二乘解 w = D n e w + A \boldsymbol{w} = \boldsymbol{D}_{new}^{+}\boldsymbol{A} w=Dnew+A 得到的,这个过程需要花费一些时间,所以OMP算法
比MP算法
要慢一些。 - 残差 f \boldsymbol{f} f 是通过原始的 A \boldsymbol{A} A 和 D new ⋅ w \boldsymbol{D}_\text{new}\cdot \boldsymbol{w} Dnew⋅w 计算得到的。
- 迭代次数最多是 D \boldsymbol{D} D 的列数,或者是信号 X \boldsymbol{X} X 的稀疏 K K K 已知,那么就迭代 K K K 次。
3 OMP缺陷
当
D
\boldsymbol{D}
D 中存在中两个原子有相关性时,OMP算法
可能会得到一个错误的重构信号。
D 1 = [ 0.6 0.8 1 0.8 0.6 0 ] \boldsymbol{D1}=\left[\begin{array}{lll}0.6 & 0.8 & 1 \\ 0.8 & 0.6 & 0\end{array}\right] D1=[0.60.80.80.610] and D 2 = [ 0.6 0.61 1 0.8 0.79 0 ] \boldsymbol{D2}=\left[\begin{array}{lll}0.6 & 0.61 & 1 \\ 0.8 & 0.79 & 0\end{array}\right] D2=[0.60.80.610.7910]
矩阵
D
2
\boldsymbol{D2}
D2 具有非常高的一致性,因为第二列与第一列非常相似。矩阵
D
1
\boldsymbol{D1}
D1 的一致性较差,因为第二列与第一列和第三列不太相似。由
μ
\mu
μ 表示的一致性值定义为
μ
=
max
i
,
j
;
i
≠
j
∣
⟨
D
(
:
,
i
)
,
(
D
:
,
j
)
⟩
∣
.
\mu=\max _{i, j ; i \neq j}|\langle \boldsymbol{D}(:, i) ,(\boldsymbol{D}:, j)\rangle| .
μ=i,j;i=jmax∣⟨D(:,i),(D:,j)⟩∣.
μ
\mu
μ 的值介于
0
0
0 和
1
1
1 之间。如果
μ
\mu
μ 非常高,则OMP
通常会给出错误的重建结果。
4 说明总结
在正交匹配追踪
中,残差
总是与已经选择过的原子所形成的的线性表示向量
正交的。这意味着一个原子不会被选择两次,结果会在有限的几步收敛。
LAST、参考文献
压缩感知重构算法之正交匹配追踪(OMP)_彬彬有礼的专栏-CSDN博客_omp
MP算法和OMP算法及其思想_逍遥剑客的专栏-CSDN博客_omp算法