相关文章推荐
侠义非凡的剪刀  ·  月光光心慌慌:杀戮(2021) 1080P ...·  9 月前    · 
开朗的海豚  ·  731部队罪证陈列馆公布日本细菌战新罪证·  9 月前    · 
月球上的钢笔  ·  國立雲林科技大學-精密儀器中心- ...·  10 月前    · 
沉着的抽屉  ·  细菌化石_百度百科·  10 月前    · 
灰常酷的炒面  ·  在家享受你的星巴克時光| ...·  11 月前    · 
小百科  ›  压缩感知之常用测量矩阵及matlab代码_高斯随机测量矩阵
压缩感知 高斯 压缩感知 matlab 矩阵
一直单身的台灯
8 月前
  • 前言
  • 一、测量矩阵是什么?
  • 二、常用的测量矩阵及其matlab代码
    • 1、随机高斯测量矩阵
    • 2、随机伯努利测量矩阵
    • 3、部分哈达玛测量矩阵
    • 4、部分傅里叶测量矩阵
    • 5、稀疏随机测量矩阵
    • 6、拓普利兹测量矩阵
    • 7、循环测量矩阵

    观测矩阵的设计是压缩感知的第二步,在这里给出常用的测量矩阵matlab代码,供大家查找使用。代码内容参考自以下网站,并针对其中个别的代码进行了修改,想探究其原理的可进入此网站查找~

    https://blog.csdn.net/jbb0523/article/details/44700735

    一、测量矩阵是什么?

    测量矩阵用来使人们可以看到由仪器所获得的观测值

    1、随机高斯测量矩阵

    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);
    

    2、随机伯努利测量矩阵

    function [ Phi ] = BernoulliMtx( M,N )
    %BernoulliMtx Summary of this function goes here
    %   Generate Bernoulli matrix 
    %   M -- RowNumber
    %   N -- ColumnNumber
    %   Phi -- The Bernoulli matrix
        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);    %按照公式来看应该有这句
    

    3、部分哈达玛测量矩阵

    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));
    

    4、部分傅里叶测量矩阵

    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));
    

    5、稀疏随机测量矩阵

    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<M 
    %   Phi -- The SparseRandom matrix
    %% Generate SparseRandom matrix   
        Phi = zeros(M,N);
        for ii = 1:N
            ColIdx = randperm(M);
            Phi(ColIdx(1:d),ii) = 1;
    

    6、拓普利兹测量矩阵

    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,:);
    

    7、循环测量矩阵

    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,:);
    

      以上就是此节要展示的代码内容。自己在学习压缩感知的过程中查阅过很多资料,也测试过很多代码,这里的代码入股不亏。如果代码仍和其原理有所偏差,大家也可以根据原理自行进行修改~

    function [ Phi ] = GaussMtx( M,N ) %GaussMtx Summary of this function goes here % Generate Bernoulli matrix % M -- RowNumber % N -- ColumnNumber % Phi -- The Gauss matrix 压缩感知(Compressed Sensing, CS)是近年来在信号处理领域取得重大突破的一种新的信号获取和重构理论。它不同于传统的信号采样与重建方法,压缩感知通过采集远少于奈奎斯特采样定律所要求的样本数量,再通过优化算法从这些少量的数据中重构出完整的信号。本章将对压缩感知技术进行基础性介绍,旨在让读者对压缩感知有初步的认识。信号的稀疏表示是指在某个变换域内,信号可以用远小于其原始维度的少量非零系数来表示。换言之,一个稀疏信号在变换域中大部分系数接近于零,只有少数系数显著不为零。         下面以文献【吴赟.压缩感知测量矩阵的研究[D]. 西安电子科技大学硕士学位论文,2012】为依据,给出文献中2.2节内容所述的六种测量矩阵MATLAB实现代码,仅为一种参考实现方式,还未验证其正确性。 1、高斯矩阵 Phi=np.random.randn(256,256) u, s, vh = np.linalg.svd(Phi) Phi = u[:256*sampleRate,] #将测量矩阵正交化 这段代码让我产生了如下疑问: 1.采样率的作用是什么?怎么使用的? 2.为何奇异值分解的各参数服从高斯分布? (到了最后也没有解决,不... 题目:压缩感知的常见测量矩阵         下面首先给出十篇参考文献中有关测量矩阵的叙述,然后以一篇硕士论文中对七种常见测量矩阵的描述依据,给出了这七种常见测量矩阵的MATLAB实现代码,以为以后的研究提供一个参考,由于目前还没有一个简单有效的测量矩阵评价方法,因此这里给出的七种测量矩阵的代码的正确性并没有验证。由于本人对乱引参考文献很受伤,经常按照引用的参考文献对应去找原文却找不到,所以这里 压缩感知中的常见测量矩阵及其MATLAB实现代码压缩感知中的常见测量矩阵及其MATLAB实现代码原文链接:http://blog.csdn.net/jbb0523/article/details/44700735题目:压缩感知的常见测量矩阵下面首先给出十篇参考文献中有关测量矩阵的叙述,然后以一篇硕士论文中对七种常见测量矩阵的描述依据,给出了这七种常见测量矩阵的MATLAB实现代码,以为以后的研究提... function [ Phi ] = GaussMtx( M,N ) %GaussMtx Summary of this function goes here % Generate Bernoulli matrix % M -- RowNumber % N 有限等距常数(RestrictedIsometry Constant, RIC)是与有限等距性质(Restricted IsometryProperty, RIP)紧密结合在一起的一个参数。一、RIC定义:在前面的一篇RIP文章中其实已经提到了,这里在贴出该定义:CS满足条件:S阶RIP性质只要要求0二、RIC计算:RIC与特征值的关系:三、MATLAB代码function y=RIPText(x... --------------------------------------画信号图--------------------------------------1、目标信号稀疏表示。将目标信号变换到尽可能稀疏的稀疏变换域,即为信号的稀疏表示。%-----------------------利用三角函数生成频域或DCT域离散信号--------------------------%-----------------------------使用OMP算法重建-----------------------
 
推荐文章
侠义非凡的剪刀  ·  月光光心慌慌:杀戮(2021) 1080P 英语中字(3.8GB)-百度网盘资源 ...
9 月前
开朗的海豚  ·  731部队罪证陈列馆公布日本细菌战新罪证
9 月前
月球上的钢笔  ·  國立雲林科技大學-精密儀器中心- 運用中心儀器學術產出之致謝中英文 ...
10 月前
沉着的抽屉  ·  细菌化石_百度百科
10 月前
灰常酷的炒面  ·  在家享受你的星巴克時光| Starbucks® at Home
11 月前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号