sopt_mltb_solve_rwBPDN - Solve reweighted BPDN problem Solve the reweighted L1 minimization function using an homotopy continuation method to approximate the L0 norm. At each iteration the following problem is solved: min_x ||W Psit x||_1 s.t. ||y-A x||_2 < epsilon where W is a diagonal matrix with diagonal elements given by [W]_ii = delta(t)/(delta(t)+|[Psit x(t)]_i|). The input parameters are defined as follows. - y: Input data (measurements). - epsilon: Noise bound. - A: Forward measurement operator. - At: Adjoint measurement operator. - Psi: Synthesis sparsity transform. - Psit: Analysis sparsity transform. - paramT: Structure containing parameters for the L1 solver (see documentation for sopt_mltb_solve_BPDN). - sigma: Noise standard deviation in the analysis domain. - tol: Minimum relative change in the solution. The algorithm stops if ||x(t)-x(t-1)||_2/||x(t-1)||_2 < tol. where x(t) is the estimate of the solution at iteration t. - maxiter: Maximum number of iterations of the reweighted algorithm. - initsol: Initial solution for a warmstart. References: [1] R. E. Carrillo, J. D. McEwen, D. Van De Ville, J.-Ph. Thiran, and Y. Wiaux. Sparsity averaging for compressive imaging. IEEE Sig. Proc. Let., in press, 2013. [2] R. E. Carrillo, J. D. McEwen, and Y. Wiaux. Sparsity Averaging Reweighted Analysis (SARA): a novel algorithm for radio-interferometric imaging. Mon. Not. Roy. Astron. Soc., 426(2):1223-1234, 2012.
0001 function sol = sopt_mltb_solve_rwBPDN(y, epsilon, A, At, Psi, Psit, ... 0002 paramT, sigma, tol, maxiter, initsol) 0003 % sopt_mltb_solve_rwBPDN - Solve reweighted BPDN problem 0004 % 0005 % Solve the reweighted L1 minimization function using an homotopy 0006 % continuation method to approximate the L0 norm. At each iteration the 0007 % following problem is solved: 0008 % 0009 % min_x ||W Psit x||_1 s.t. ||y-A x||_2 < epsilon 0010 % 0011 % where W is a diagonal matrix with diagonal elements given by 0012 % 0013 % [W]_ii = delta(t)/(delta(t)+|[Psit x(t)]_i|). 0014 % 0015 % The input parameters are defined as follows. 0016 % 0017 % - y: Input data (measurements). 0018 % 0019 % - epsilon: Noise bound. 0020 % 0021 % - A: Forward measurement operator. 0022 % 0023 % - At: Adjoint measurement operator. 0024 % 0025 % - Psi: Synthesis sparsity transform. 0026 % 0027 % - Psit: Analysis sparsity transform. 0028 % 0029 % - paramT: Structure containing parameters for the L1 solver (see 0030 % documentation for sopt_mltb_solve_BPDN). 0031 % 0032 % - sigma: Noise standard deviation in the analysis domain. 0033 % 0034 % - tol: Minimum relative change in the solution. 0035 % The algorithm stops if 0036 % ||x(t)-x(t-1)||_2/||x(t-1)||_2 < tol. 0037 % where x(t) is the estimate of the solution at iteration t. 0038 % 0039 % - maxiter: Maximum number of iterations of the reweighted algorithm. 0040 % 0041 % - initsol: Initial solution for a warmstart. 0042 % 0043 % References: 0044 % [1] R. E. Carrillo, J. D. McEwen, D. Van De Ville, J.-Ph. Thiran, and 0045 % Y. Wiaux. Sparsity averaging for compressive imaging. IEEE Sig. Proc. 0046 % Let., in press, 2013. 0047 % [2] R. E. Carrillo, J. D. McEwen, and Y. Wiaux. Sparsity Averaging 0048 % Reweighted Analysis (SARA): a novel algorithm for radio-interferometric 0049 % imaging. Mon. Not. Roy. Astron. Soc., 426(2):1223-1234, 2012. 0050 0051 param=paramT; 0052 iter=0; 0053 rel_dist=1; 0054 0055 if nargin<11 0056 fprintf('RW iteration: %i\n', iter); 0057 sol = sopt_mltb_solve_BPDN(y, epsilon, A, At, Psi, Psit, param); 0058 else 0059 sol = initsol; 0060 end 0061 0062 temp=Psit(sol); 0063 delta=std(temp(:)); 0064 0065 while (rel_dist>tol && iter<maxiter) 0066 0067 iter=iter+1; 0068 delta=max(sigma/10,delta); 0069 fprintf('RW iteration: %i\n', iter); 0070 fprintf('delta = %e\n', delta); 0071 0072 % Weights 0073 weights=abs(Psit(sol)); 0074 param.weights=delta./(delta+weights); 0075 0076 % Warm start 0077 param.initsol=sol; 0078 param.gamma=1e-1*max(weights(:)); 0079 sol1=sol; 0080 0081 % Weighted L1 problem 0082 sol = sopt_mltb_solve_BPDN(y, epsilon, A, At, Psi, Psit, param); 0083 0084 % Relative distance 0085 rel_dist=norm(sol(:)-sol1(:))/norm(sol1(:)); 0086 fprintf('Relative distance = %e\n\n', rel_dist); 0087 delta = delta/10; 0088 0089 end 0090