压缩感知测量矩阵之有限等距常数RIC的计算

2024-03-19 19:10

本文主要是介绍压缩感知测量矩阵之有限等距常数RIC的计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        有限等距常数(RestrictedIsometry Constant, RIC)是与有限等距性质(Restricted IsometryProperty, RIP)紧密结合在一起的一个参数。在前面的一篇《压缩感知测量矩阵之有限等距性质》中已经给出了RIC的定义【1】:


        SRIP性质只要要求0<δS<1就可以了,而RIC是指满足RIP的最小δS

        在网上偶然搜到了一个计算RIC的MATLAB程序【2】,从这个程序可以理解有关RIC深层次的一些关系,加深概念的理解,代码如下:

function y=RIPText(x,t)
% calculete the kth Restricted Isometry Constant of measurement matrix x.
% Modified on March 13th, 2012.
% Reference: Wei Dai, Olgica Milenkovic. Subspace Pursuit for Compressive Sensing
% Signal Reconstruction. IEEE Trans. ona Information Theory. vol.55, no.5,
% 2230-2249. May, 2009
%calculate the Restricted Isomentry Constant of matrix constructed by
%random n columns of the original matrix x.
%created by Li Bo in March 16th, 2011
%Harbin Institute of Technolgy
n=size(x,2);%the numbers of column of original matrix x
Num=1:n;%create a row of numbers from one to n with iterval 1
Com=combntns(Num,t);% all the combination of the selected t columns from total n columns
ma=size(Com,1);% the number of combinations
delta=zeros(1,ma);% a vector used to store the restricted isometry constant candidate
for i=1:mab=x(:,Com(i,:));% new matrix constructed by the t selected columns e=eig(b'*b-eye(t));%calculate all the eigen values of matrix b'*b-eye(t)delta(i)=(max(abs(e)));%select the largest absolute eigen value as restricted isomentry candidate
end
y=max(delta);% select the largest one as restricted isometry constant
        首先给出这个程序的参考文献有关RIC的部分【3】:


        文献【4】更是以定理的形式给出了特征值与RIC的关系,如下定理1所示,并对定理进行了充要性的证明。


        虽然程序作者已经对程序进行了详细的注释,但这里还是得再说明一下,否则初学者想看懂这个程序还是有一定难度的,下面本人对网上这个MATLAB程序进行一下解释。

        1、输入输出参数

        输入参数x即为待求RIC的测量矩阵即文献【1】中的F、文献【3】中的Φ、文献【4】中的A,输入参数t即文献【1】中的S、文献【3】【4】中的k;输出参数y即所求的有限等距常数RIC,另两个参数现不予解释。

        2、参数初始化

        第一行是使用函数size获得矩阵x的列数;第二行生成一个行向量;第三行使用了函数combntns,是得到从向量Num中任取t个值的所有组合形式,如:


如上图所示,结果将每种组合放一行,共有多少种组合就有多少行,这一步的目的是为后面任取矩阵x的t列做准备的;第四行是得到Com的行数,即得到共有多少种t列的组合;第五行成生一个全零的列向量,长为ma即组合种数。

        3、主循环部分

        这是整个程序最关键的部分,循环的目的是遍历每一种t列的组合,循环内部共三行。第一行是根据矩阵Com的第i行指示着取出x中的t列即其中的一种t列组合。第二行是本程序的核心,最为关键,首先函数eig是求矩阵的特征值,特征值的定义参见一般的线性代数教材,如文献【5】:


其中b’*b即为文献【4】中的G(AT),也就是AT所谓的格拉姆矩阵,有关格拉姆矩阵的概念可参见文献【6】和【7】,在这里就不多说了,只知道它等于矩阵的转置乘以矩阵本身就可以了;eye(t)生成一个单位矩阵,即对角线元素全为1其它元素全为零的矩阵;然后eig(b'*b-eye(t))所求得的特征值是b'*b特征值减去1,这个可以证明:

设矩阵A的特征值为λA,即AxAx,根据特征值的定义知道单位阵的特征值为1,所以根据特征值定义有

(AE)xx=AxExAxx=(λA-1) x

以上面文献【4】的符号来说明,G(AT)的特征值在[1-δk, 1+δk]之间,那么由第二行求得的特征值应在[-δk, +δk]之间。第三行用函数max求所得特征值的最大值,即δk了;注意程序中的这行程序来自文献【2】的后半部分链接,其它来自前半部分链接,此句前半部分的链接程序为为delta(i)=max(e);,而我个人感觉这句话应该为delta(i)=max(abs(e));,即就求特征值最大值前应该先取绝对值,因为若求出的负值的绝对值中含大于正值最大值的项应该取更大的绝对值,就如上面文献【4】式(7)下面的那一行(下限是1减去,上限是减去1,相当于都减1再取绝对值)

δk =max{1-λmin(G(AT)),λmax(G(AT))-1}

经过循环后,遍历所有组合得到每一个组合的最大值。

        最后一句话再用y=max(delta)取出所有组合中的最大值的最大值。

        然而,要想真的用上面的程序计算一个矩阵的RIC是不现实的,因为文献【4】中又指出了这是一个组合复杂度问题:


        本人在笔记本电脑上尝试了几次,当t>=8时就会报内存不足的错误:

        其实主要是Com=combntns(Num,t);这行程序出了问题,原因就是这个是组合复杂度问题,因此这个程序目前来看只能是让我们更好的理解这里面复杂的关系和概念。文献【4】给出了一种计算的思路,有兴趣的可以查阅。


注:可把文献【2】的两段程序都下载下来用比较软件比较一下,本程序各有所取。

 参考文献:

【1】Candes E, Tao T.Decoding by linear programming. IEEE Transactions on Information Theory,2005,59(8):4203-4215.

【2】William,RIPText,www.pudn.com/tangzhe,RIP,www.pudn.com

【3】WeiDai, Olgica Milenkovic. Subspace Pursuit for Compressive Sensing  Signal Reconstruction. IEEE Trans. onInformation Theory. vol.55, no.5, 2230-2249. May, 2009

【4】张波,刘郁林,王开. 稀疏随机矩阵有限等矩性质分析[J]. 电子与信息学院,2014,36(1):169-174.

【5】同济大学数学系 编. 线性代数(第五版)[M].北京:高等教育出版社,2007:117.

【6】史秀英. 格拉姆(Gram)矩阵的半正定性及其应用[J].邵阳学院学报(自然科学版),2009,6(1):15-17.

【7】zuobinwang. Gram方阵的探讨.百度文库

这篇关于压缩感知测量矩阵之有限等距常数RIC的计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/826984

相关文章

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

SpringBoot使用GZIP压缩反回数据问题

《SpringBoot使用GZIP压缩反回数据问题》:本文主要介绍SpringBoot使用GZIP压缩反回数据问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot使用GZIP压缩反回数据1、初识gzip2、gzip是什么,可以干什么?3、Spr

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N