压缩感知中的常见测量矩阵及其MATLAB实现代码

压缩感知中的常见测量矩阵及其MATLAB实现代码

原文链接:http://blog.csdn.net/jbb0523/article/details/44700735

题目:压缩感知的常见测量矩阵

下面首先给出十篇参考文献中有关测量矩阵的叙述,然后以一篇硕士论文中对七种常见测量矩阵的描述依据,给出了这七种常见测量矩阵的MATLAB实现代码,以为以后的研究提供一个参考,由于目前还没有一个简单有效的测量矩阵评价方法,因此这里给出的七种测量矩阵的代码的正确性并没有验证。由于本人对乱引参考文献很受伤,经常按照引用的参考文献对应去找原文却找不到,所以这里都是以截图的方式给出,方便到去文献中找到这里的原文内容。

一、参考文献中常见的测量矩阵

[1]喻玲娟,谢晓春.压缩感知介绍[J].电视技术,2008,32(12):16-18.

[2]李树涛,魏丹.压缩传感综述[J]. 自动化学报,2009,35(11):1369-1377.

[3]焦李成,杨淑媛,刘芳,侯彪. 压缩感知回顾与展望[J]. 电子学报,2011,39(7):1651-1662.

[4]石光明,刘丹华,高大化,刘哲,林杰,王良君. 压缩感知理论及其研究进展[J]. 电子学报,2009,37(5):1070-1081.

[5]李坤,马彩文,李艳,陈萍.压缩感知重构算法综述[J].红外与激光工程,2013,42(z1):225-232.

[6]党骙,马林华,田雨,张海威,茹乐,李小蓓. m序列压缩感知测量矩阵构造[J]. 西安电子科技大学(自然科学版),2015,42(2):215-222.

[7]朱志臻,周崇彬,刘发林,李滨兵,张志达. 用于压缩感知的二值化测量矩阵[J]. 微波学报,2014,30(2):79-83,96.

[8]王学伟,崔广伟,王琳,贾晓璐,聂伟.基于平衡Gold序列的压缩感知测量矩阵的构造[J]. 仪器仪表学报,2014,35(1):97-102.

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

[10]王侠,王开,王青云,梁瑞宇,左加阔,赵力,邹采荣. 压缩感知中的确定性随机观测矩阵构造[J]. 信号处理,2014,30(4):436-442.

二、常见测量矩阵的MATLAB实现

下面以文献【吴赟.压缩感知测量矩阵的研究[D]. 西安电子科技大学硕士学位论文,2012】为依据,给出文献中2.2节内容所述的六种测量矩阵MATLAB实现代码,仅为一种参考实现方式,还未验证其正确性。

1、高斯矩阵

以下代码生成的高斯矩阵方差为1,若为改为1/M,只须将除以根号M即可。

[plain] view

plaincopy

function [ Phi ] = GaussMtx( M,N )

%GaussMtx Summary of this function goes here

%   Generate Bernoulli matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   Phi -- The Gauss matrix

%% Generate Gauss matrix

Phi = randn(M,N);

%Phi = Phi/sqrt(M);

end

2、伯努利矩阵

以下代码是按式(2-8)生成的伯努利矩阵,若要按式(2-9)生成则需使用后半部分注释掉的代码即可。注意代码中用到了MATLAB自带的randi函数,若你的MATLAB版本较低,可能要用randint函数代替,后面若用到此函数则一样要注意这一点。

[plain] view

plaincopy

function [ Phi ] = BernoulliMtx( M,N )

%BernoulliMtx Summary of this function goes here

%   Generate Bernoulli matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   Phi -- The Bernoulli matrix

%% (1)Generate Bernoulli matrix(The first kind)

% 1--P=0.5   -1--P=0.5

Phi = randi([0,1],M,N);%If your MATLAB version is too low,please use randint instead

Phi(Phi==0) = -1;

%Phi = Phi/sqrt(M);

% %% (2)Generate Bernoulli matrix(The second kind)

% % 1--P=1/6   -1--P=1/6  0--2/3

%     Phi = randi([-1,4],M,N);%If your MATLAB version is too low,please use randint instead

%     Phi(Phi==2) = 0;%P=1/6

%     Phi(Phi==3) = 0;%P=1/6

%     Phi(Phi==4) = 0;%P=1/6

%     %Phi = Phi*sqrt(3/M);

end

3、部分哈达玛矩阵

由于MATLAB自带的函数hadamard参数有限制,所以程序中首先计算满足要求的参数L,需要注意的是,hadamard参数并不像文献中所述仅为2的整数次幂,而是12的整数倍或20的整数倍或2的整数次幂,详情在MATLAB查看hadamard的help文件。

[plain] view

plaincopy

function [ Phi ] = PartHadamardMtx( M,N )

%PartHadamardMtx Summary of this function goes here

%   Generate part Hadamard matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   Phi -- The part Hadamard matrix

%% parameter initialization

%Because the MATLAB function hadamard handles only the cases where n, n/12,

%or n/20 is a power of 2

L_t = max(M,N);%Maybe L_t does not meet requirement of function hadamard

L_t1 = (12 - mod(L_t,12)) + L_t;

L_t2 = (20 - mod(L_t,20)) + L_t;

L_t3 = 2^ceil(log2(L_t));

L = min([L_t1,L_t2,L_t3]);%Get the minimum L

%% Generate part Hadamard matrix

Phi = [];

Phi_t = hadamard(L);

RowIndex = randperm(L);

Phi_t_r = Phi_t(RowIndex(1:M),:);

ColIndex = randperm(L);

Phi = Phi_t_r(:,ColIndex(1:N));

end

4、部分傅里叶矩阵

以下代码生成的是部分傅里叶矩阵,这里要提的一点是,有关“归一化”的概念在网上说法不一,一种说法是向量除以向量各项之和,另一种说法是向量除以向量的2范数(各项平方之和再开方),这里采用后者。

[plain] view

plaincopy

function [ Phi ] = PartFourierMtx( M,N )

%PartFourierMtx Summary of this function goes here

%   Generate part Fourier matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   Phi -- The part Fourier matrix

%% Generate part Fourier matrix

Phi_t = fft(eye(N,N))/sqrt(N);%Fourier matrix

RowIndex = randperm(N);

Phi = Phi_t(RowIndex(1:M),:);%Select M rows randomly

%normalization

for ii = 1:N

Phi(:,ii) = Phi(:,ii)/norm(Phi(:,ii));

end

end

5、稀疏随机矩阵

[plain] view

plaincopy

function [ Phi ] = SparseRandomMtx( M,N,d )

%SparseRandomMtx Summary of this function goes here

%   Generate SparseRandom matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   d -- The number of '1' in every column,d

%   Phi -- The SparseRandom matrix

%% Generate SparseRandom matrix

Phi = zeros(M,N);

for ii = 1:N

ColIdx = randperm(M);

Phi(ColIdx(1:d),ii) = 1;

end

end

6、托普利兹矩阵和循环矩阵

这里先给出托普利兹矩阵,文中说经过M次循环,这里直接利用MATLAB自带函数生成一个托普利兹方阵再取前M行。

[plain] view

plaincopy

function [ Phi ] = ToeplitzMtx( M,N )

%ToeplitzMtx Summary of this function goes here

%   Generate Toeplitz matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   Phi -- The Toeplitz matrix

%% Generate a random vector

%     %(1)Gauss

%     u = randn(1,2*N-1);

%(2)Bernoulli

u = randi([0,1],1,2*N-1);

u(u==0) = -1;

%% Generate Toeplitz matrix

Phi_t = toeplitz(u(N:end),fliplr(u(1:N)));

Phi = Phi_t(1:M,:);

end

下面是循环矩阵,仍然利用MATLAB自带函数生成。

[plain] view

plaincopy

function [ Phi ] = CirculantMtx( M,N )

%CirculantMtx Summary of this function goes here

%   Generate Circulant matrix

%   M -- RowNumber

%   N -- ColumnNumber

%   Phi -- The Circulant matrix

%% Generate a random vector

%     %(1)Gauss

%     u = randn(1,N);

%(2)Bernoulli

u = randi([0,1],1,N);

u(u==0) = -1;

%% Generate Circulant matrix

Phi_t = toeplitz(circshift(u,[1,1]),fliplr(u(1:N)));

Phi = Phi_t(1:M,:);

end

以上都是采用MATLAB自带的toeplitz函数,这需要首先生成一个随机向量,而托普利兹矩阵和循环矩阵的区别也就在于这个随机向量的结构不同,注意代码中有关toeplitz函数的两个输入参数好好体会即可。

压缩感知中的常见测量矩阵及其MATLAB实现代码相关教程

matlab 测量矩阵,压缩感知中的常见测量矩阵及其MATLAB实现代码相关推荐

  1. 压缩感知高斯测量矩阵matlab,浅谈压缩感知(十七):测量矩阵之有限等距常数RIC的计算...

    有限等距常数(RestrictedIsometry Constant, RIC)是与有限等距性质(Restricted IsometryProperty, RIP)紧密结合在一起的一个参数. 一.RI ...

  2. 压缩感知中的数学知识:投影矩阵(projection matrix)

    题目:压缩感知中的数学知识:投影矩阵(projection matrix) ========================背景======================== 关注于投影矩阵主要是看 ...

  3. 压缩感知中OMP算法的C/C++实现

    压缩感知中OMP算法的C/C++实现 背景介绍 算法实现部分 总结 阅读之前注意: 本文阅读建议用时:30min 本文阅读结构如下表: 项目 下属项目 测试用例数量 背景介绍 无 0 算法实现部分 无 ...

  4. nsl0重构算法 matlab,基于SL0压缩感知信号重建的改进算法

    第 28 卷 第 6 期 2012 年 6 月 信 号 处 理 SIGNAL PROCESSING Vol. 28 No. 6 Jun. 2012 收稿日期: 2012-03-30; 修回日期: 20 ...

  5. matlab 沃尔什矩阵,压缩感知——沃尔什-哈达玛(WHT)变换与逆变换的Matlab代码实现...

    沃尔什-哈达玛变换(Walsh-Hadmard Transform,WHT),是一种典型的非正弦函数变换,采用正交直角函数作为基函数,具有与傅里叶函数类似的性质,图像数据越是均匀分布,经过沃尔什-哈达 ...

  6. 基于压缩感知的心电信号QRS检测算法matlab仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB源码 %********************* ...

  7. c语言 4x4矩阵乘法,C中的快速4x4矩阵乘法

    我试图找到一个函数的优化C或汇编实现,该函数将两个4x4矩阵相乘.平台是基于ARM6或ARM7的iPhone或iPod. 目前,我使用的是一种相当标准的方法--只是展开一个小循环. #define O ...

  8. 浅谈压缩感知(十六):感知矩阵之RIP

    在压缩感知中,总是看到"矩阵满足RIP"之类的字眼,没错,这是一个压缩感知绕不开的术语,有限等距性质(Restricted Isometry Property, RIP). 注意: ...

  9. 稀疏表达和压缩感知的一些对比

    本报告将从稀疏表达和压缩感知两个方面论述我对它们的一些理解. 在压缩感知模型中:   y=Ax+n   (1) x表示原始信号,A表示稀疏映射矩阵,n表示加性噪声,y表示压缩测量.在此模型中,如果原始 ...

最新文章

  1. Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
  2. grub安装的 三种安装方式
  3. 碎片化趋势下手机浏览器或成赢家
  4. 加拿大计算机硕士gpa不够,加拿大研究生留学申请者绩点低怎么办?这四类应对方法你都知道吗?...
  5. 第一章 略说中医的学习与研究(6)
  6. C#控制Bartender自动列印的2种方法(附源码)
  7. Win11系统怎么设置默认浏览器教学
  8. linux删除 grub rescue,删除Ubuntu后 开机grub rescue无法进入BIOS
  9. php的rsa密匙长度,PHP解决RSA公私密钥换行处理
  10. python2.7.18绿色安装包制作
  11. 我的心只悲伤七次-纪伯伦
  12. vue项目中/deep/的用法-vue-cli中没法覆盖样式解决方法
  13. PID控制里面积分控制为什么能消除静态误差及微分控制为什么能减少超调量的原因
  14. mysql 聚簇索引 和聚簇索引 (二级索引)的 那些事
  15. 万能五笔 linux,[转载]Ubuntu 安装 万能五笔 输入法
  16. 千万数据量下的真实业务场景SQL性能优化!
  17. vector sort 出现异常处理--std::sort(_RanIt,_RanIt,_Pr)
  18. QMessageBox
  19. 解决kubelet报错:kubelet.go:2183] node “k8s-20-52“ not found
  20. Games101:作业3(管线分析、深度插值、libpng warning、双线性插值等)

热门文章

  1. 考进中科院计算所:我的经历和体会
  2. 埃森哲报告解读 | 见微知著,把握中国消费市场新常态
  3. 阿里云服务器配置如何选
  4. 中年男人像条狗?其实是不如狗!
  5. 【LQ系列】 BASIC-16~BASIC-19
  6. 科学家量子计算机时间倒流,腾讯内容开放平台
  7. 高效深度学习:让模型更小、更快、更好!
  8. 虚拟声源定位系统+环绕声场效果
  9. java毕业设计——基于java+J2EE+sqlserver的在线考试系统设计与实现(毕业论文+程序源码)——在线考试系统
  10. 记前谷歌台湾区总经理– 张成秀