压缩感知重构算法之正交匹配追踪算法(OMP)

news2024/12/23 5:15:09

算法的重构是压缩感知中重要的一步,是压缩感知的关键之处。因为重构算法关系着信号能否精确重建,国内外的研究学者致力于压缩感知的信号重建,并且取得了很大的进展,提出了很多的重构算法,每种算法都各有自己的优缺点,使用者可以根据自己的情况,选择适合自己的重构算法,大大增加了使用的灵活性,也为我们以后的研究提供了很大的方便。

压缩感知的重构算法主要分为三大类:

1.组合算法   2.贪婪算法  3.凸松弛算法

三种算法对比分析如下:

算法类别

定义

优缺点

具体算法

贪婪算法

贪婪算法首先选取合适的原子,再逐步进行递增,进而逼近信号矢量,利用这种过程进行

计算量和精度的要求居中,也是三种重构算法中应用最大的一种

(1)匹配追踪算法

(2)正交匹配追踪算法

(3)分段正交匹配追踪算法

(4)正则化正交匹配追踪算法

(5)稀疏自适应匹配追踪算法

组合算法

先是对信号进行结构采样,然后再通过对采样的数据进行分组测试,最后完成信号的重构

需要观测的样本数目比较多但运算的效率最高

(1) 傅里叶采样

(2) 链式追踪算法

(3)  HHS追踪算法

凸松弛算法

法,它将非凸问题转化为凸问题进行求解,即l0范数转化成l1范数并采用线性规划来求解

计算量大但是需要观测的数量少重构的时候精度高

(1)基追踪算法

(2)最小全变差算法

(3)内点法

(4)梯度投影算法

(5)凸集交替投影算法

本篇主要介绍正交匹配追踪算法(OMP)

1、OMP算法的原理

OMP算法是在MP算法的基础上进行改进的,沿用了MP算法的重构的思想,但是又对MP算法进行了改进,使得算法的效率更高,应用更加的广泛。

MP算法的信号分解中步骤中介绍:,这说明信号在已经选择的原子上的投影(等是右边第一项)是非正交的,还存在着残差,也就是说每次迭代的过程是次最优的,不是最优解,要想最终的迭代收敛,需要的迭代次数较多。OMP算法就是根据MP算法的不足之处加以改进,把所选择的原子首先通过Schimidt正交化处理,使得在达到迭代条件的时候需要的迭代次数较MP算法少,但是正交化的过程中会增加计算量。

OMP算法正交化原理:

2、OMP算法的流程图 

算法流程图如下:

 3、OMP算法的算法步骤

算法步骤如下:

 4、OMP算法的信号重构

本节对OMP算法进行重构,采用一维离散信号和二维lena信号对其进行信号重构,来观察OMP算法的重构功能。

(1)一维离散信号的OMP算法仿真

  本次仿真使用matlab随机生成的一维离散信号,稀疏度k=15,信号长度N=512,观测向量的长度M=128,那么采样率M/N=0.25,其中的观测矩阵是高斯随机矩阵。采用OMP算法对一维信号进行重构,重构图如1:

 图1:OMP算法重构一维信号

通过上面的重构可以得出,OMP算法对一维信号有很好的重构作用。

(2)二维lena图像的OMP算法重构

OMP算法对二维信号进行重构,在这里我们采取和MP算法二维信号重构的方法,也是先采取离散余弦变换(dct)使数据稀疏,算法重构结束之后再进行离散反余弦变换(idct),这样就转化为了我们所需要的。本次在matlab中的仿真,我们采用的是256X256的Lena的二维图像,M=180,N=256,稀疏度k=40,M/N=0.7,观测矩阵是高斯随机矩阵,采用OMP算法对二维图像进行重构,重构效果如图:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/603652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java-面向对象

java-面向对象 面向对象 首先考虑事物中存在哪些对象,再建立对象与对象的关系 一、面向对象-(类和对象) 1.1类和对象的理解 客观存在的事物皆为对象 ,所以我们也常常说万物皆对象。 类 类的理解 类是对现实生活中一类具有共同属性…

java-字符流和字节流(一)

java-字符流和字节流(一) 一、File类 1.1 File类概述和构造方法 File类介绍 它是文件和目录路径名的抽象表示文件和目录是可以通过File封装成对象的对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已。它可以是存在的,也…

【C++ 程序设计】第 1 章:C++ 语言简介

目录 一、C 语言的发展简史 二、C 语言的特点 (1)基本的输入/输出 (2)头文件和命名空间 (3)强制类型转换运算符 (4)函数参数的默认值 (5)引用和函数…

超简单好看的HTML5七夕情人节表白网页(表白直接拿去用) HTML+CSS+JS

博主:命运之光 专栏:web开发(html css js) 目录 ✨简介: ✨前言: ✨视频展示 ✨源代码 ✨代码的使用方法(超简单什么都不用下载) 🍓1.打开记事本 🍓2.将…

springboot+vue高校食堂点餐送餐配送系统

食堂送餐系统的开发过程中,采用B / S架构,主要使用java语言进行开发,结合最新流行的springboot框架。使用Mysql数据库和Eclipse/idea开发工具。该四川工商学院食堂送餐系统包括用户、商家、送餐员和管理员。其主要功能包括商家管理、用户管理…

【Azure】微软 Azure 基础解析(八)Azure 存储服务:Blob存储、队列存储、文件存储等特点与应用场景

本系列博文还在更新中,收录在专栏:「Azure探秘:构建云计算世界」 专栏中。 本系列文章列表如下: 【Azure】微软 Azure 基础解析(三)描述云计算运营中的 CapEx 与 OpEx,如何区分 CapEx 与 OpEx…

chatgpt赋能python:Python创建节点:简单易行的SEO优化技巧

Python创建节点:简单易行的SEO优化技巧 简介 在今天的数字时代,拥有强大在线存在感已经成为了非常重要的一种要素,而搜索引擎优化(SEO)就是其中重要的一环。优秀的SEO技巧不仅能够帮助网站吸引更多的访客&#xff0c…

chatgpt赋能python:Python编程实现高效的SEO搜索程序

Python编程实现高效的SEO搜索程序 在当今互联网时代,搜索引擎是人类获取信息的主要途径,而优化搜索引擎结果从而使自己的网站得到更多展示机会是一直以来网站优化重要的一环。Python语言以其简洁、高效、易学的特点,成为了编写高效SEO搜索程…

Linux 实操篇--定时任务调度

Linux 实操篇-定时任务调度 crond 任务调度 crontab 进行定时任务的设置 概述 任务调度:是指系统在某个时间执行的特定的命令或程序。 任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等 个别用户工作&#xff…

java-基础语法(二)

java-基础语法(二) 一、流程控制语句 1.1 流程控制语句分类 顺序结构 分支结构(if, switch) 循环 结构(for, while, do…while) 1.2 顺序结构 顺序结构执行流程图: 1.3 分支结构之if语句 if语句格式1 格式:if (关系表达式) {语句体; }执行流程&…

04.JavaWeb-Tomcat服务器+Maven

1.B/S架构 B/S架构即浏览器/服务器模式,他是对C/S架构的一种改进;与C/S架构相比B/S架构可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。 2.Tomcat服务器 Tomcat是一个用于运行Java Web应用程序的服务器&…

chatgpt赋能python:Python分解9位数的方法介绍

Python分解9位数的方法介绍 Python是一种广泛使用的编程语言,具有强大的功能和易于使用的语法。其中,分解一个9位数是一个常见的问题。在本篇文章中,将介绍如何用Python分解一个9位数。 分解9位数的方法 对于一个9位数,我们可以…

SVM算法的介绍

一、SVM算法的介绍 1.什么是SVM算法? SVM(Support Vector Machine)是一种常见的监督学习算法,用于进行二分类或多分类任务。它的主要思想是找到一个最优的超平面,将不同类别的样本分隔开。 超平面最大间隔介绍&#…

MyBatisPlus快速入门

MyBatisPlus 1、MyBatisPlus简介MyBatisPlus概述入门案例 2、标准数据层开发MyBatisPlus开启日志标准CRUD分页查询 3、DQL编程控制条件查询null值处理查询投影查询条件字段映射与表名映射 4、DML编程控制id生成策略控制多数据操作逻辑删除乐观锁 5、代码生成器 1、MyBatisPlus简…

testng介绍

1、java.lang.Exception: No runnable methods at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods IDEA run case抛出no runnable methods,project基于testng编写case 需要配置Run→Edit Configuration 2、task配置 test {useTestNG {//打印…

Vector-常用CAN工具 - CANoe迁移常见Port配置问题

从 CANoe 和 CANalyzer 12.0 SP4 版本开始,以太网迁移向导将在必要时自动开始将现有工具配置转换为新的基于端口的网络访问格式。尽管大多数现有配置都可以毫无问题地转换,但有些可能不会。如果在迁移过程中遇到问题,迁移向导将通过以下可能的…

LeetCode刷题(ACM模式)-04字符串

参考引用:代码随想录 注:每道 LeetCode 题目都使用 ACM 代码模式,可直接在本地运行,蓝色字体为题目超链接 1. 反转字符串 344. 反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形…

PAT A1162 Postfix Expression

1162 Postfix Expression 分数 25 作者 陈越 单位 浙江大学 Given a syntax tree (binary), you are supposed to output the corresponding postfix expression, with parentheses reflecting the precedences of the operators. Input Specification: Each input file …

权限管理与Shiro入门

权限管理与Shiro入门 学习目标: 理解前端权限控制思路 理解有状态服务和无状态服务通过拦截器实现JWT鉴权 能够理解shiro以及shiro的认证和授权 前端权限控制 需求分析 需求说明 基于前后端分离的开发模式中,权限控制分为前端页面可见性权限与后…