MP算法与OMP算法讲解一

article/2025/10/22 21:18:15
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/ice110956/article/details/18403789

稀疏编码的一般最优化公式为:


其中的零范数为非凸优化。那么如何解这么一个非凸优化问题呢?其中一个常用的解法就是MP算法。


MP算法

MP算法是一种贪心算法(greedy),每次迭代选取与当前样本残差最接近的原子,直至残差满足一定条件。


求解方法


首先解决两个问题,怎么定义“最接近原子”,怎么计算残差?

选择最接近残差的原子:MP里定义用向量内积原子与残差的距离,我们用R表示残差,di表示原子,则:

Max[Dist(R,di)]=max[<R,di>];

残差更新:R=R-<R,di>I;继续选择下一个,直至收敛;


需要注意的是,MP算法中要求字典原子||di||=1,上面的公式才成立。

我们用二维空间上的向量来表示,用如下的图来表述上面的过程:


上图中d1,d2,d3表示归一化的原子,红色向量r表示当前残差;

进过内积计算,<r,d3>最大,于是r分解为d3方向以及垂直于d3方向的两个向量(<r,d3>d3及r-<r,d3>d3),把d3方向的分量(<r,d3>d3)加入到已经求得的重构项中,那么绿色向量(r-<r,d3>d3)变为新的残差。

再一轮迭代得到如下:


R往d1方向投影分解,绿色向量成为新的残差。

 

具体算法:

 


收敛性

从上面的向量图我们可以清楚地看出,k+1的残差Rk+1是k步残差Rk的分量。根据直角三角形斜边大于直角边,|Rk+1|<=|Rk|,则算法收敛。


注意事项:

1.上面也讲过,字典的原子是归一化的,也就是||di||=1,因为我们选取max<R,di>时,如果di长度不统一,不能得出最好的投影。

2.如果我们的字典只有两个向量d1,d2,那么MP算法会在这两个向量间交叉迭代投影,也就是f=a1d1+a2d2+a3d1+a4d2+…..;也就是之前投影过的原子方向,之后还有可能投影。换句话说,MP的方向选择不是最优的,是次优的。

如下图:


这也是其改进版本OMP要改进的地方。

 

OMP算法

也就是正交的MP算法。

MP算法的次最优性来源其残差只与当前投影方向垂直,这样在接下来的投影中,很有可能会再次投影到原来的方向。

于是,在投影时,如果我们使得残差Rk+1与x1-xk+1的所有向量垂直,则可以克服这个问题,如下:

 


求解方法

假设我们已经得到了第k步的最优解:


我们要继续更新到第k+1步,目标是得到:


需要注意的是,我们下一步更新时,之前原子的系数 也要更新,否则不能满足约束。

于是我们需要求得如何更新之前原子系数 ,以及如何求得下一个投影方向 。

 





收敛性:

同样根据勾股定理,得到如下:

于是算法收敛。

 

具体步骤:


 

最后,贴一个sparse求解的工具包,里面包含了MP,OMP算法的代码:

http://spams-devel.gforge.inria.fr/

 

参考文献:

http://lear.inrialpes.fr/people/mairal/tutorial_iccv09/

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

OrthogonalMatching Pursuit:Recursive Function Approximation with Applications to WaveletDecomposition


http://chatgpt.dhexx.cn/article/PYXpksR6.shtml

相关文章

MP算法和OMP算法介绍

正交匹配追踪算法是90年代初提出来的,主要目的是将信号在完备的字典库上进行稀疏分解。 1. 信号的稀疏表示(sparse representation of signals) 预设一个过完备字典矩阵,矩阵每列表示一种原型信号的原子。可将一个信号y表示成这些原子的稀疏线性组合。即 y = Dx ,或者…

单相/三相光伏发电并网/离网simlink仿真(MPPT)或是大功率VSC 最大功率点追踪算法(MPPT)仿真模型

单相/三相光伏发电并网/离网simlink仿真&#xff08;MPPT&#xff09;或是大功率VSC 最大功率点追踪算法&#xff08;MPPT&#xff09;仿真模型&#xff0c; 有基于扰动观察法&#xff08;P&O&#xff09;&#xff0c;恒压算法&#xff0c;电导增量法&#xff0c;变步长扰动…

光伏逆变simlink仿真(MPPT) 最大功率点追踪算法(MPPT)仿真模型,本设计基于扰动观察法

光伏逆变simlink仿真&#xff08;MPPT&#xff09; 最大功率点追踪算法&#xff08;MPPT&#xff09;仿真模型&#xff0c;本设计基于扰动观察法&#xff08;P&O&#xff09;最大功率点跟踪算法追踪光伏电池的发电曲线&#xff0c;实现最大功率点追踪输出的仿真模型。 目前…

Matlab|基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率

&#x1f4cb;&#x1f4cb;&#x1f4cb;本文目录如下&#xff1a;⛳️⛳️⛳️ 目录 1 光伏特性 2 动机 3 基于粒子群优化的MPPT算法 4 运行结果 5 结论 6 Simulink&Matlab代码实现 1 光伏特性 光伏电池特性是非线性的&#xff0c;其输出功率随辐照度和温度的变化而变化。…

OMP与MP算法流程与代码

目录 1. 算法描述2. 部分公式推导3. 算法代码3.1 OMP算法代码3.2 MP算法代码 4. 例子 本文算法描述主要来自下面书籍的3.1节。 [1] 【以色列】Michael Elad著. 曹铁勇等翻.《稀疏与冗余表示–理论及其在信号与图像处理中的应用》.国防工业出版社. 2015. 1. 算法描述 (1) 任务&a…

并行计算(MPI + OpenMP)

文章目录 并行计算MPI&#xff08;进程级并行&#xff09;基本结构数据类型点对点通信阻塞非阻塞非连续数据打包 聚合通信Communicator & Cartisen Grid OpenMP&#xff08;线程级并行&#xff09;简介基本制导语句worksharing constructSectionsSingleFor 临界区 & 原…

算法5:普里姆算法

目录 1. 应用场景-修路问题2. 最小生成树3. 普里姆算法介绍4. 代码实现 1. 应用场景-修路问题 有7个村庄(A, B, C, D, E, F, G) &#xff0c;现在需要修路把7个村庄连通各个村庄的距离用边线表示(权) &#xff0c;比如 A – B 距离 5公里问&#xff1a;如何修路保证各个村庄都能…

使用粒子群PSO算法实现MPPT-M语言仿真

在Octave以及Matlab上&#xff0c;仿真了使用粒子群PSO实现MPPT的过程。粒子数为4。太阳能电池为4个串联。 2019年4月24日更新matlab代码。 目录 1.1 先绘制出PV曲线&#xff08;Octave&#xff09; 1.2 PSO算法&#xff08;Octave&#xff09; 2.1 绘制PV曲线&#xff08…

MPP概述

什么是MPP MPP (Massively Parallel Processing)&#xff0c;即大规模并行处理&#xff0c;在数据库非共享集群&#xff08;传统的单节点不属于集群&#xff0c;双机热备或Oracle RAC等&#xff0c;均是基于共享存储的&#xff09;中&#xff0c;每个节点都有独立的磁盘存储系…

粒子群算法(PSO)光伏发电 MPPT实现多峰值寻优,阴影遮蔽光伏发电算法 使用s函数编写粒子群算法,阴影遮蔽,实现多峰值寻优

粒子群算法&#xff08;PSO&#xff09;光伏发电 MPPT实现多峰值寻优&#xff0c;阴影遮蔽光伏发电算法 使用s函数编写粒子群算法&#xff0c;阴影遮蔽&#xff0c;实现多峰值寻优&#xff0c;解决经典mppt算法会形成局部最优的问题&#xff0c;追踪到最大峰值功率输出。 粒子群…

基于PSO粒子群算法的MPPT最大功率跟踪Simulink仿真,PSO采用S函数实现

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 MPPT控制器的全称是“最大功率点跟踪”&#xff08;Maximum Power Point Tracking&#xff09;太阳能控制器&#xff0c;是传统太阳能充放电控制器的升级换代产品。MPPT控制器能够实时侦测太阳能…

理解MP算法

转载&#xff1a;http://blog.csdn.net/u010103202/article/details/50932936 2&#xff0e;MP算法 作为一类贪婪算法&#xff0c;MP算法的基本思路是在迭代中不断找寻最有测量矩阵列来逼近被表示向量&#xff0c;继而寻得最优的稀疏逼近&#xff0c;使得x与y的残差最小。对于…

matlab simulink光伏发电系统MPPT算法

1、内容简介 略 553-可以交流、咨询、答疑 2、内容说明 世界各国能源需求的不断增长&#xff0c;以及传统能源资源的消耗和对环境的不良影 响&#xff0c;促使社会寻找替代能源。因此光伏发电成为研究热点之一&#xff0c;在对光伏电池的 研究中最大功率点追踪 (Maximum Pow…

MP算法与OMP算法

稀疏编码的一般最优化公式为&#xff1a; 其中的零范数为非凸优化。那么如何解这么一个非凸优化问题呢&#xff1f;其中一个常用的解法就是MP算法。 MP算法 MP算法是一种贪心算法&#xff08;greedy&#xff09;&#xff0c;每次迭代选取与当前样本残差最接近的原子&#xff0…

光伏并网MPPT算法控制解析

01 MPPT介绍 太阳能光伏发电是当前利用新能源的主要方式之一&#xff0c;光伏并网发电的主要问题是提高系统中太阳能电池阵列的工作效率和整个系统的工作稳定性&#xff0c;MPPT&#xff08;Maximum power point tracking,最大功率点跟踪&#xff09;是太阳能光伏发电系统中的…

MPC算法

MPC算法 一. 引言 在工程技术方面&#xff0c;MPC全称可指Model Predictive Control模型预测控制&#xff08;又称RHC, Receding Horizon &#xff09;。 模型预测控制算法 一种进阶过程控制方法&#xff0c;自1980年以来开始在化工炼油等过程工业得到应用&#xff0c;并在经…

MP算法和OMP算法及其思想与实现

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1]&#xff0c;这两个算法虽然在90年代初就提出来了&#xff0c;但作为经典的算法&#xff0c;国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用&#xff0c;并未对其进行详尽的分析&…

MP算法

MP算法 MP算法是一种贪心算法&#xff08;greedy&#xff09;&#xff0c;每次迭代选取与当前样本残差最接近的原子&#xff0c;直至残差满足一定条件。 求解方法 首先解决两个问题&#xff0c;怎么定义“最接近原子”&#xff0c;怎么计算残差&#xff1f; 选择最接近残差的原…

MP算法和OMP算法及其思想

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1]&#xff0c;这两个算法虽然在90年代初就提出来了&#xff0c;但作为经典的算法&#xff0c;国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用&#xff0c;并未对其进行详尽的分析&…

学习笔记2 光伏MPPT算法

目录 前言1. 光伏电池的分类1.1 按照电池结构分类1.2 按照电池材料分类: 2. 光伏电池模型及光伏特性曲线2.1 光伏电池模型2.2 光伏特性曲线 3. 影响光伏电池输出特性曲线的两个主要因素3.1 光照的影响3.1.1 光照对I-V曲线的影响3.1.2 光照对P-V曲线的影响3.1.3 光照对P-I曲线的…