• 大小: 8KB
    文件类型: .m
    金币: 2
    下载: 0 次
    发布日期: 2024-01-28
  • 语言: Matlab
  • 标签: matlab  

资源简介

EXCOVapp算法是EXCOV的改进新,算法功能比EXCOV好,费了好久找到的

资源截图

代码片段和文件信息

function [s_hatsigma2_hatA_indexCount]=ExCoVapp(Hyvarargin)
%Approx. ExCoV routine: 
%Coded by Kun Qiu (kqiu@iastate.edu)
%updated Feb 14 2009

%Function usage
%=======================================================
%INPUT(compulsory):
%H:                      the sensing matrix
%y:                       the measurement column vector
%
%INPUT(optional):
%‘Noi_Cov‘:        the N by N noise covariance structure matrix
%                         (default=eye(N))
%‘FIR_len‘:         the size of moving average window
%                         (default=10)
%‘Init_mode‘:      type of initial sparsity support (valued in {01})
%                         0: initialize with empty set 
%                         1: initialize with a crude high level signal components support estimate
%                         (default=1)
%‘Visibility‘:         Option to see visually the reconstrution process (valued in {01})
%                         0: work silently
%                         1: work openly
%                         (default=1)
%========================================================
%OUTPUT:
%s_hat:              the signal esitmate
%sigma2_hat:    the noise variance estimate
%A_index:         the estimated set of high level signal components
%Count:             Count of number of iterations
%========================================================

if (nargin-length(varargin))~=2
    error(‘Missing required inputs!‘);
end

[Nm]=size(H);

%Setting default values for the optional inputs
C=eye(N);
FIR_len=10;
Init_mode=1;
Visibility=1;

%Read the optional inputs
if (rem(length(varargin)2)==1)
    error(‘Optional inputs must go by pairs!‘);
else
    for i=1:2:(length(varargin)-1)
        switch upper(varargin{i})
            case upper(‘Noi_Cov‘)
                C=varargin{i+1};
            case upper(‘FIR_len‘)
                FIR_len=varargin{i+1};
            case upper(‘Init_mode‘)
                Init_mode=varargin{i+1};
            case upper(‘Visibility‘)
                Visibility=varargin{i+1};     
            otherwise
                error([‘Unrecognized optional input: ‘‘‘ varargin{i} ‘‘‘‘]);
        end
    end
end

Inv_HH=inv(H*H‘);
C_inv=inv(C);

scale=sqrt(N/(y‘*C_inv*y));
y=scale*y;

%Initialization
if Init_mode
    ma=floor(0.5*N/log(m/N));
else
    ma=1;
end
mb=m-ma;
u=H‘*Inv_HH*y;
u_sort=sort(abs(u)‘descend‘);
A_index=find(abs(u)>=u_sort(ma))‘;
B_index=1:m;
B_index(A_index)=[];
HA=H(:A_index);
HB=H(:B_index);
s_A_init=u(A_index);
sigma2=(y-HA*s_A_init)‘*C_inv*(y-HA*s_A_init)/N;
delta2_a=10*sigma2*ones(ma1)./diag(HA‘*HA);

expand=1;
compress=0;
exit_flag=0;
Count=0;
p=0;
A_index_record_pre=[];
GML_star=-inf;
GML_record=-inf;

if Visibility
    figure(1)
    set(gcf‘color‘‘w‘);
    subplot(211);
    plot(-inf-inf);
    axis([0N0500]);
    xlabel(‘Sparsity‘‘Fontsize‘12);
    ylabel(‘GL‘‘Fontsize‘12);
    title(‘Now 

评论

共有 条评论