bpdq_1d

PURPOSE ^

bpdq_1d : Main implementation of BPDQ algorithm

SYNOPSIS ^

function [x_bpdq,D] = bpdq_1d(yq,A,epsilon,p,varargin)

DESCRIPTION ^

 bpdq_1d : Main implementation of BPDQ algorithm

 x_bpdq = bpdq_1d(yq,A,epsilon,p,varargin);

 This solves the BPDQ program
 x_bpdq = argmin_x  ||x||_1 s.t. ||yq - A*x||_p <= epsilon
 using the  Douglas-Rachford algorithm.

 This is the implementation of the method described in
 "Dequantizing Compressed Sensing : When Oversampling and Non-Gaussian
 Constraints Combine"
 by Laurent Jacques, David Hammond, M. Jalal Fadili
 ( submitted to IEEE Transactions on Signal Processing)

 Inputs:
 yq - quantized measurements
 A - sensing matrix
 epsilon - lpball radius, chosen so that original signal is 
   feasible with high probability
 p - BPDQ moment

 Selectable control parameters :
 dr_gamma, dr_lambda - DR algorithm parameters
 dr_maxiter - maximum number of DR iterations
 dr_relerr_thresh - relatize error threshold to terminate DR iteration
 dr_verbosity - 1 to enable output, 0 to supress
 fca_maxiter - max number of iterations for fca iteration
 (f composed with A - iteration to compute prox(f(A(x))) : see 
 bpdq_f_comp_A.m for details
 fca_relerr_thresh - relative error threshold to terminate fca iteration
 fca_verbosity - 1 to enable output, 0 to supress

 Outputs:
 x_bpdq - solution to BPDQ program
 D - debugging structure containing field dr_relerr_save, for
 verifying empirical convergence of algorithm

 This file is part of BPDQ Toolbox (Basis Pursuit DeQuantizer)
 Copyright (C) 2009, the BPDQ Team (see the file AUTHORS distributed with
 this library) (See the notice at the end of the file.)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 % bpdq_1d : Main implementation of BPDQ algorithm
0002 %
0003 % x_bpdq = bpdq_1d(yq,A,epsilon,p,varargin);
0004 %
0005 % This solves the BPDQ program
0006 % x_bpdq = argmin_x  ||x||_1 s.t. ||yq - A*x||_p <= epsilon
0007 % using the  Douglas-Rachford algorithm.
0008 %
0009 % This is the implementation of the method described in
0010 % "Dequantizing Compressed Sensing : When Oversampling and Non-Gaussian
0011 % Constraints Combine"
0012 % by Laurent Jacques, David Hammond, M. Jalal Fadili
0013 % ( submitted to IEEE Transactions on Signal Processing)
0014 %
0015 % Inputs:
0016 % yq - quantized measurements
0017 % A - sensing matrix
0018 % epsilon - lpball radius, chosen so that original signal is
0019 %   feasible with high probability
0020 % p - BPDQ moment
0021 %
0022 % Selectable control parameters :
0023 % dr_gamma, dr_lambda - DR algorithm parameters
0024 % dr_maxiter - maximum number of DR iterations
0025 % dr_relerr_thresh - relatize error threshold to terminate DR iteration
0026 % dr_verbosity - 1 to enable output, 0 to supress
0027 % fca_maxiter - max number of iterations for fca iteration
0028 % (f composed with A - iteration to compute prox(f(A(x))) : see
0029 % bpdq_f_comp_A.m for details
0030 % fca_relerr_thresh - relative error threshold to terminate fca iteration
0031 % fca_verbosity - 1 to enable output, 0 to supress
0032 %
0033 % Outputs:
0034 % x_bpdq - solution to BPDQ program
0035 % D - debugging structure containing field dr_relerr_save, for
0036 % verifying empirical convergence of algorithm
0037 %
0038 % This file is part of BPDQ Toolbox (Basis Pursuit DeQuantizer)
0039 % Copyright (C) 2009, the BPDQ Team (see the file AUTHORS distributed with
0040 % this library) (See the notice at the end of the file.)
0041 
0042 function [x_bpdq,D] = bpdq_1d(yq,A,epsilon,p,varargin)
0043   control_params={'dr_gamma',.05,...
0044                   'dr_lambda',.5,...               
0045                   'dr_maxiter',500,...
0046                   'dr_relerr_thresh',1e-6,...
0047                   'dr_verbosity',0,...
0048                   'fca_maxiter',500,...
0049                   'fca_relerr_thresh',1e-6,...
0050                   'fca_verbosity',0};
0051   
0052   argselectAssign(control_params);
0053   argselectCheck(control_params,varargin);
0054   argselectAssign(varargin);
0055   
0056   % c is upper frame bound for frame corresponding to matrix A
0057   % (used for iteration for composition, ref
0058   % Jacques et. al. Lemma 4)
0059   c= max(svd(A))^2;
0060   
0061   % Sensing data
0062   [M,N] = size(A);
0063   opA = @(in) A*in;
0064   opAt = @(in) A'*in;
0065 
0066   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0067   % define prox operators
0068   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
0069   
0070   % f1 is ||yq-A*x||_p, prox computed iteratively
0071   % with function composition and lp_ball projection
0072   % (tgamma may be discarded as f1(x) has only zero and infinite values)
0073   lpball_prox = @(u,tgamma) bpdq_proj_lpball_mex(u,yq,epsilon,p);
0074   prox1 = @(u,tgamma) bpdq_prox_f_comp_A(u,lpball_prox,opA,opAt,c,...
0075                                          'fca_maxiter',fca_maxiter,...
0076                                          'fca_relerr_thresh',fca_relerr_thresh,...
0077                                          'fca_verbosity',fca_verbosity);
0078   % f2 is ||x||_1, prox is soft thresholding
0079   prox2= @(u,tgamma) bpdq_soft_threshold(u,tgamma);
0080   
0081   x0=zeros(N,1); % initialize at zero
0082   % call douglas rachford iteration with defined prox operators
0083   [x_bpdq,relerr_save]=bpdq_d_r_iter(prox1,prox2,dr_gamma,dr_lambda,x0,...
0084                                   'dr_maxiter',dr_maxiter,...
0085                                   'dr_relerr_thresh',dr_relerr_thresh,...
0086                                   'dr_verbosity',dr_verbosity);
0087   D.dr_relerr_save=relerr_save;
0088 
0089 % The BPDQ Toolbox is free software: you can redistribute it and/or modify
0090 % it under the terms of the GNU General Public License as published by
0091 % the Free Software Foundation, either version 3 of the License, or
0092 % (at your option) any later version.
0093 %
0094 % The BPDQ Toolbox is distributed in the hope that it will be useful,
0095 % but WITHOUT ANY WARRANTY; without even the implied warranty of
0096 % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0097 % GNU General Public License for more details.
0098 %
0099 % You should have received a copy of the GNU General Public License
0100 % along with The BPDQ Toolbox.  If not, see <http://www.gnu.org/licenses/>.

Generated on Mon 06-Jul-2009 14:16:10 by m2html © 2003