浅谈压缩感知(三十一):压缩感知重构算法之定点连续法FPC

主要内容:

  1. FPC的算法流程
  2. FPC的MATLAB实现
  3. 一维信号的实验与结果

基于凸优化的重构算法

基于凸优化的压缩感知重构算法。

约束的凸优化问题:

去约束的凸优化问题:

在压缩感知中,J函数和H函数的选择:


一、FPC的算法

FPC,全称Fixed-Point Continuation,这里翻译为定点连续。

数学模型:

算法:

该算法在迭代过程中利用了收缩公式shrinkage(也称为软阈值soft thresholding),算法简单、优美。

迭代过程:

(梯度)

合并一下,就得到了整个迭代过程的公式:

之所以称为连续continuation,是因为u的选择,我们需要一种连续的路径追踪策略,即对于参数u,选择一个合适的连续上升的序列来引导整个迭代过程走向收敛。

算法流程:

具体参考:http://www.caam.rice.edu/~optimization/L1/fpc/

二、FPC的MATLAB实现(fpc.m)

可以通过上面的链接将相关代码下载下来,这里就不贴出来。

三、一维信号的实验与结果(basic_run.m)

1、重构前后信号值Xs与X对比:

  1. 迭代误差收敛曲线:

  1. FPC与以下三种算法的比较:

时间: 2024-08-08 05:43:54

浅谈压缩感知(三十一):压缩感知重构算法之定点连续法FPC的相关文章

浅谈关于欧几里得的一系列算法

浅谈关于欧几里得的一系列算法 --------- 这里有个叫分界线的家伙说,本章的所有讨论均在整数的范围中,所有除法都为带余除法o---------------- 朴素欧几里得算法 又名辗转相除法,代码实现如下: int gcd(int a, int b) // a >= b { if(b == 0) return a; return gcd(b, a % b) } 想一想为什么可以这样计算? 我们设 \(a=k_1m, \ b=k_2m \ ,gcd(a,b)=m,\ gcd(k_1,k_2)

浅谈Kotlin(三):类

浅谈Kotlin(一):简介及Android Studio中配置 浅谈Kotlin(二):基本类型.基本语法.代码风格 前言: 已经学习了前两篇文章,对Kotlin有了一个基本的认识,往后的文章开始深入介绍Kotlin的实战使用. 本篇介绍Kotlin中类的使用. 一.表现形式 首先看一段Java中定义类的形式,定义三个属性,每一个属性对应一个get.set方法,有一个toString()方法 /* * @author xqx * @emil [email protected] * create

浅谈数据仓库 (三) 数据漂移处理

前言 我们是一个做传统会员管理CRM的团队,应用数据的级别比较高,过去会存在这样一种现象,T+1 财务报表,运营统计各类报表 的指标偶尔会和商户的自己记录用户消费储值记录会有出入,后来了解到,我们系统中存在很严重的数据漂移问题,这也是dw系统或者ods来说普遍存在的问题,今天我们好好聊下该如何解决数据漂移问题   数据漂移产生的原因 通常我们把从源系统同步进入数据仓库的第一层数据成为ODS层数据,我们公司目前只有ODS一层,虽说只有一层,但是仍然有有一个顽疾:数据漂移,简单来说就是ODS表的同一

浅谈Spring(三)AOP原理

一.概念术语 AOP(Aspect Oriented Programming):面向切面编程. 面向切面编程(也叫面向方面编程),是目前软件开发中的一个热点,也是Spring框架中的一个重要内容.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. 1. 切面(Aspect) 官方的抽象定义为"一个关注点的模块化,这个关注点可能会横切多个对象",在本例中,"切面"就是类TestAspect所关

浅谈c#的三个高级参数ref out 和Params

c#的三个高级参数ref out 和Params 前言:在我们学习c#基础的时候,我们会学习到c#的三个高级的参数,分别是out .ref 和Params,在这里我们来分别的讲解一下,在这里的我们先不做具体的解释,我会通过几个例子来做分别的解释. 一:out参数  1.首先我先给大家一个题:我们来写一个方法,来求一个数组中的最大值,最小值,总和,平均值.代码如下:  int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };  通过分析我们会发现如果我们写一个方

浅谈图论(三)——最小生成树

写在前面:今天突然发现还没有写过最小生成树的博客,然后调堆优化prim板子好久才调出来--赶紧写篇博客来保命. 一.最小生成树概念: 在一个n个点的有向图中,选取n-1条边使所有顶点两两联通,那么这个边集叫做这个图的一个生成树 在所有的生成树中,边权和最小的那一个叫做图的最小生成树. 二.Kruskal算法 求图的最小生成树的常用方法有两种,Kruskal和Prim kruskal算法的步骤如下: (1)将所有边按边权从小到大排序 (2)选取一条边权最小且两顶点未联通的边并把它连上 (3)重复步

浅谈 Python实现三次反转解决旋转数组问题

三次反转和python切片 解决 旋转数组 首先声明这几种方法是借鉴Leetcode题解中[吴彦祖](https://leetcode-cn.com/problems/rotate-array/solution/san-ci-fan-zhuan-fu-yi-xie-pythonicde-jie-fa-pytho/)的解法,单纯为和我一样的freshchicken做补充思路及记录用,侵删 旋转数组问题 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. 示例 1: 输入: [1

浅谈php随机不重复数的两种算法

先引入别人的一个秒表计时类(counttime.class.php): 1.先看第一个例子(大数中取少数): 1 <? 2 /* 3 @描述: Stopwatch这个类用户获取脚本执行时间 4 @作者: Klesti Hoxha <[email protected]> 5 */ 6 7 class Stopwatch { 8 private $start; 9 private $end; 10 private $markup_start = array(); 11 private $ma

浅谈Spring(四)AOP实例

在<浅谈Spring(三)AOP原理>中我详细的介绍了AOP的基本概念和实现原理,这里给出代码示例. 一.XML方式 1. TestAspect:切面类 package com.spring.aop; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; public class TestAspect { public void doAfter(JoinPoint jp) { System