Contents
%DEMO_COMPRESS_SENSING Compress sensing example using forward backward algorithm % % We present a compress sensing example solved with the forward backward % solver. % The problem can be expressed as this % % argmin ||Ax-b||^2 + tau ||x||_1 % % Where b are the measurements and A the measurement matrix. % % We set % % f_1(x)=||x||_1 % We define the prox of f_1 as: % % prox_{f1,gamma} (z) = argmin_{x} 1/2 ||x-z||_2^2 + gamma ||z||_1 % % This function is simply a soft thresholding. % % f_2(x)=||Ax-b||_2^2 % We define the gradient as: % % grad_f(x) = 2 * A^*(Ax-b) % % A is the measurement matrix (random Gaussian distribution) % % The number of measurements M is computed with respect of the size of the % signal N and the sparsity level K: % % M=K*max(4,ceil(log(N))) % % With this number of measurements, the algorithm is supposed to perform % very often always a perfect reconstruction. This plot is automatically % generated; let's hope it will be the case. % % Results % ------- % % Figure 1: Results of the algorithm % % This figure shows the original signal and the reconstruction done % thanks to the algorithm and the measurements. The number of % measurements is M=900, the length of the signal N=5000 and K=100. This is % equivalent to a compression ratio of 5.55. % % References: % P. Combettes and J. Pesquet. Proximal splitting methods in signal % processing. Fixed-Point Algorithms for Inverse Problems in Science and % Engineering, pages 185--212, 2011. % % P. Combettes and J. Pesquet. A douglas--rachford splitting approach to % nonsmooth convex variational signal recovery. Selected Topics in Signal % Processing, IEEE Journal of, 1(4):564--574, 2007. % % % Url: http://unlocbox.sourceforge.net/doc/demos/demo_compress_sensing.php % Copyright (C) 2012-2013 Nathanael Perraudin. % This file is part of UNLOCBOX version 1.6.1 % % This program is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program. If not, see <http://www.gnu.org/licenses/>. % Author: Nathanael Perraudin, Gilles Puy % Date: Nov 2012
Initialisation
clear all; close all; % Loading toolbox init_unlocbox(); verbose = 2; % verbosity level
UnLocBoX version 1.6.1. Copyright 2012-2013 LTS2-EPFL, by Nathanael Perraudin
Creation of the problem
tau = 1; % regularization parameter for the problem N = 5000; % Size of the signal K = 100; % Sparsity level R = max(4, ceil(log(N))); % Constant fprintf('The compression ratio is: %g\n',N/(R*K)); % Mesurements matrix A = randn(R * K, N); % Create a K sparse signal x = zeros(N, 1); I = randperm(N); x(I(1:K)) = randn(K, 1); x = x / norm(x); % Measurements y = A * x;
The compression ratio is: 5.55556
Defining proximal operators
% setting the function f2 f2.grad = @(x) 2*A'*(A*x-y); f2.eval = @(x) norm(A*x-y)^2; f2.beta = 2 * norm(A)^2; % setting the function f1 param_l1.verbose = verbose -1; param_l1.tight = 1; f1.prox=@(x, T) prox_l1(x, T*tau, param_l1); f1.eval=@(x) tau*norm(x,1);
solving the problem
% setting different parameter for the simulation param_solver.verbose = verbose; % display parameter param_solver.maxit = 300; % maximum iteration param_solver.tol = 1e-4; % tolerance to stop iterating param_solver.method = 'FISTA'; % desired method for solving the problem % solving the problem sol = solvep(zeros(N,1), {f1, f2}, param_solver);
Algorithm selected:FORWARD_BACKWARD Iteration 1: prox_L1: ||A x-y||_1 = 5.831724e-04, REL_OBJ, iter = 1 ||f|| = 2.059626e+02, rel_norm = 3.098239e+00 Iteration 2: prox_L1: ||A x-y||_1 = 7.895953e-04, REL_OBJ, iter = 1 ||f|| = 9.054056e+01, rel_norm = 1.274810e+00 Iteration 3: prox_L1: ||A x-y||_1 = 9.232455e-04, REL_OBJ, iter = 1 ||f|| = 4.548013e+01, rel_norm = 9.907718e-01 Iteration 4: prox_L1: ||A x-y||_1 = 1.004181e-03, REL_OBJ, iter = 1 ||f|| = 2.902168e+01, rel_norm = 5.671087e-01 Iteration 5: prox_L1: ||A x-y||_1 = 1.048088e-03, REL_OBJ, iter = 1 ||f|| = 2.355485e+01, rel_norm = 2.320897e-01 Iteration 6: prox_L1: ||A x-y||_1 = 1.067481e-03, REL_OBJ, iter = 1 ||f|| = 2.199779e+01, rel_norm = 7.078255e-02 Iteration 7: prox_L1: ||A x-y||_1 = 1.071069e-03, REL_OBJ, iter = 1 ||f|| = 2.160638e+01, rel_norm = 1.811550e-02 Iteration 8: prox_L1: ||A x-y||_1 = 1.064792e-03, REL_OBJ, iter = 1 ||f|| = 2.142255e+01, rel_norm = 8.580881e-03 Iteration 9: prox_L1: ||A x-y||_1 = 1.052726e-03, REL_OBJ, iter = 1 ||f|| = 2.119583e+01, rel_norm = 1.069660e-02 Iteration 10: prox_L1: ||A x-y||_1 = 1.038083e-03, REL_OBJ, iter = 1 ||f|| = 2.092375e+01, rel_norm = 1.300309e-02 Iteration 11: prox_L1: ||A x-y||_1 = 1.022937e-03, REL_OBJ, iter = 1 ||f|| = 2.064710e+01, rel_norm = 1.339909e-02 Iteration 12: prox_L1: ||A x-y||_1 = 1.008459e-03, REL_OBJ, iter = 1 ||f|| = 2.038892e+01, rel_norm = 1.266291e-02 Iteration 13: prox_L1: ||A x-y||_1 = 9.951508e-04, REL_OBJ, iter = 1 ||f|| = 2.015002e+01, rel_norm = 1.185587e-02 Iteration 14: prox_L1: ||A x-y||_1 = 9.827816e-04, REL_OBJ, iter = 1 ||f|| = 1.991777e+01, rel_norm = 1.166069e-02 Iteration 15: prox_L1: ||A x-y||_1 = 9.711417e-04, REL_OBJ, iter = 1 ||f|| = 1.968645e+01, rel_norm = 1.174986e-02 Iteration 16: prox_L1: ||A x-y||_1 = 9.599090e-04, REL_OBJ, iter = 1 ||f|| = 1.945420e+01, rel_norm = 1.193872e-02 Iteration 17: prox_L1: ||A x-y||_1 = 9.490001e-04, REL_OBJ, iter = 1 ||f|| = 1.922457e+01, rel_norm = 1.194434e-02 Iteration 18: prox_L1: ||A x-y||_1 = 9.381355e-04, REL_OBJ, iter = 1 ||f|| = 1.899660e+01, rel_norm = 1.200088e-02 Iteration 19: prox_L1: ||A x-y||_1 = 9.273642e-04, REL_OBJ, iter = 1 ||f|| = 1.877281e+01, rel_norm = 1.192070e-02 Iteration 20: prox_L1: ||A x-y||_1 = 9.168824e-04, REL_OBJ, iter = 1 ||f|| = 1.855715e+01, rel_norm = 1.162140e-02 Iteration 21: prox_L1: ||A x-y||_1 = 9.066404e-04, REL_OBJ, iter = 1 ||f|| = 1.834783e+01, rel_norm = 1.140832e-02 Iteration 22: prox_L1: ||A x-y||_1 = 8.966264e-04, REL_OBJ, iter = 1 ||f|| = 1.814418e+01, rel_norm = 1.122397e-02 Iteration 23: prox_L1: ||A x-y||_1 = 8.867078e-04, REL_OBJ, iter = 1 ||f|| = 1.794397e+01, rel_norm = 1.115766e-02 Iteration 24: prox_L1: ||A x-y||_1 = 8.770115e-04, REL_OBJ, iter = 1 ||f|| = 1.774857e+01, rel_norm = 1.100922e-02 Iteration 25: prox_L1: ||A x-y||_1 = 8.674914e-04, REL_OBJ, iter = 1 ||f|| = 1.755688e+01, rel_norm = 1.091828e-02 Iteration 26: prox_L1: ||A x-y||_1 = 8.579676e-04, REL_OBJ, iter = 1 ||f|| = 1.736516e+01, rel_norm = 1.104032e-02 Iteration 27: prox_L1: ||A x-y||_1 = 8.486746e-04, REL_OBJ, iter = 1 ||f|| = 1.717788e+01, rel_norm = 1.090246e-02 Iteration 28: prox_L1: ||A x-y||_1 = 8.396252e-04, REL_OBJ, iter = 1 ||f|| = 1.699471e+01, rel_norm = 1.077856e-02 Iteration 29: prox_L1: ||A x-y||_1 = 8.308017e-04, REL_OBJ, iter = 1 ||f|| = 1.681521e+01, rel_norm = 1.067427e-02 Iteration 30: prox_L1: ||A x-y||_1 = 8.223299e-04, REL_OBJ, iter = 1 ||f|| = 1.664327e+01, rel_norm = 1.033118e-02 Iteration 31: prox_L1: ||A x-y||_1 = 8.140606e-04, REL_OBJ, iter = 1 ||f|| = 1.647514e+01, rel_norm = 1.020502e-02 Iteration 32: prox_L1: ||A x-y||_1 = 8.059644e-04, REL_OBJ, iter = 1 ||f|| = 1.631103e+01, rel_norm = 1.006155e-02 Iteration 33: prox_L1: ||A x-y||_1 = 7.978720e-04, REL_OBJ, iter = 1 ||f|| = 1.614799e+01, rel_norm = 1.009637e-02 Iteration 34: prox_L1: ||A x-y||_1 = 7.901590e-04, REL_OBJ, iter = 1 ||f|| = 1.599227e+01, rel_norm = 9.737381e-03 Iteration 35: prox_L1: ||A x-y||_1 = 7.827916e-04, REL_OBJ, iter = 1 ||f|| = 1.584324e+01, rel_norm = 9.406542e-03 Iteration 36: prox_L1: ||A x-y||_1 = 7.755571e-04, REL_OBJ, iter = 1 ||f|| = 1.569613e+01, rel_norm = 9.372055e-03 Iteration 37: prox_L1: ||A x-y||_1 = 7.684361e-04, REL_OBJ, iter = 1 ||f|| = 1.555153e+01, rel_norm = 9.298298e-03 Iteration 38: prox_L1: ||A x-y||_1 = 7.613877e-04, REL_OBJ, iter = 1 ||f|| = 1.540922e+01, rel_norm = 9.235118e-03 Iteration 39: prox_L1: ||A x-y||_1 = 7.545577e-04, REL_OBJ, iter = 1 ||f|| = 1.527187e+01, rel_norm = 8.993976e-03 Iteration 40: prox_L1: ||A x-y||_1 = 7.480512e-04, REL_OBJ, iter = 1 ||f|| = 1.514121e+01, rel_norm = 8.629071e-03 Iteration 41: prox_L1: ||A x-y||_1 = 7.416956e-04, REL_OBJ, iter = 1 ||f|| = 1.501404e+01, rel_norm = 8.470253e-03 Iteration 42: prox_L1: ||A x-y||_1 = 7.353787e-04, REL_OBJ, iter = 1 ||f|| = 1.488809e+01, rel_norm = 8.459608e-03 Iteration 43: prox_L1: ||A x-y||_1 = 7.293988e-04, REL_OBJ, iter = 1 ||f|| = 1.476773e+01, rel_norm = 8.150658e-03 Iteration 44: prox_L1: ||A x-y||_1 = 7.235770e-04, REL_OBJ, iter = 1 ||f|| = 1.465044e+01, rel_norm = 8.005724e-03 Iteration 45: prox_L1: ||A x-y||_1 = 7.177815e-04, REL_OBJ, iter = 1 ||f|| = 1.453421e+01, rel_norm = 7.996976e-03 Iteration 46: prox_L1: ||A x-y||_1 = 7.120199e-04, REL_OBJ, iter = 1 ||f|| = 1.441904e+01, rel_norm = 7.987337e-03 Iteration 47: prox_L1: ||A x-y||_1 = 7.063775e-04, REL_OBJ, iter = 1 ||f|| = 1.430612e+01, rel_norm = 7.892845e-03 Iteration 48: prox_L1: ||A x-y||_1 = 7.008092e-04, REL_OBJ, iter = 1 ||f|| = 1.419467e+01, rel_norm = 7.852128e-03 Iteration 49: prox_L1: ||A x-y||_1 = 6.953469e-04, REL_OBJ, iter = 1 ||f|| = 1.408468e+01, rel_norm = 7.808720e-03 Iteration 50: prox_L1: ||A x-y||_1 = 6.899373e-04, REL_OBJ, iter = 1 ||f|| = 1.397468e+01, rel_norm = 7.871715e-03 Iteration 51: prox_L1: ||A x-y||_1 = 6.845874e-04, REL_OBJ, iter = 1 ||f|| = 1.386518e+01, rel_norm = 7.897449e-03 Iteration 52: prox_L1: ||A x-y||_1 = 6.795209e-04, REL_OBJ, iter = 1 ||f|| = 1.376075e+01, rel_norm = 7.589087e-03 Iteration 53: prox_L1: ||A x-y||_1 = 6.745692e-04, REL_OBJ, iter = 1 ||f|| = 1.365942e+01, rel_norm = 7.418413e-03 Iteration 54: prox_L1: ||A x-y||_1 = 6.696482e-04, REL_OBJ, iter = 1 ||f|| = 1.356064e+01, rel_norm = 7.284413e-03 Iteration 55: prox_L1: ||A x-y||_1 = 6.647791e-04, REL_OBJ, iter = 1 ||f|| = 1.346330e+01, rel_norm = 7.230000e-03 Iteration 56: prox_L1: ||A x-y||_1 = 6.601686e-04, REL_OBJ, iter = 1 ||f|| = 1.336961e+01, rel_norm = 7.007289e-03 Iteration 57: prox_L1: ||A x-y||_1 = 6.554858e-04, REL_OBJ, iter = 1 ||f|| = 1.327376e+01, rel_norm = 7.220808e-03 Iteration 58: prox_L1: ||A x-y||_1 = 6.509159e-04, REL_OBJ, iter = 1 ||f|| = 1.318043e+01, rel_norm = 7.080947e-03 Iteration 59: prox_L1: ||A x-y||_1 = 6.463586e-04, REL_OBJ, iter = 1 ||f|| = 1.308867e+01, rel_norm = 7.010608e-03 Iteration 60: prox_L1: ||A x-y||_1 = 6.415943e-04, REL_OBJ, iter = 1 ||f|| = 1.299455e+01, rel_norm = 7.242995e-03 Iteration 61: prox_L1: ||A x-y||_1 = 6.369474e-04, REL_OBJ, iter = 1 ||f|| = 1.290351e+01, rel_norm = 7.055737e-03 Iteration 62: prox_L1: ||A x-y||_1 = 6.324565e-04, REL_OBJ, iter = 1 ||f|| = 1.281491e+01, rel_norm = 6.913732e-03 Iteration 63: prox_L1: ||A x-y||_1 = 6.281096e-04, REL_OBJ, iter = 1 ||f|| = 1.272855e+01, rel_norm = 6.784985e-03 Iteration 64: prox_L1: ||A x-y||_1 = 6.238297e-04, REL_OBJ, iter = 1 ||f|| = 1.264290e+01, rel_norm = 6.774779e-03 Iteration 65: prox_L1: ||A x-y||_1 = 6.197305e-04, REL_OBJ, iter = 1 ||f|| = 1.255955e+01, rel_norm = 6.636009e-03 Iteration 66: prox_L1: ||A x-y||_1 = 6.155703e-04, REL_OBJ, iter = 1 ||f|| = 1.247460e+01, rel_norm = 6.810194e-03 Iteration 67: prox_L1: ||A x-y||_1 = 6.113705e-04, REL_OBJ, iter = 1 ||f|| = 1.238949e+01, rel_norm = 6.868999e-03 Iteration 68: prox_L1: ||A x-y||_1 = 6.071487e-04, REL_OBJ, iter = 1 ||f|| = 1.230466e+01, rel_norm = 6.894595e-03 Iteration 69: prox_L1: ||A x-y||_1 = 6.030124e-04, REL_OBJ, iter = 1 ||f|| = 1.222129e+01, rel_norm = 6.821333e-03 Iteration 70: prox_L1: ||A x-y||_1 = 5.989685e-04, REL_OBJ, iter = 1 ||f|| = 1.213976e+01, rel_norm = 6.715831e-03 Iteration 71: prox_L1: ||A x-y||_1 = 5.950312e-04, REL_OBJ, iter = 1 ||f|| = 1.206050e+01, rel_norm = 6.572322e-03 Iteration 72: prox_L1: ||A x-y||_1 = 5.912329e-04, REL_OBJ, iter = 1 ||f|| = 1.198430e+01, rel_norm = 6.358383e-03 Iteration 73: prox_L1: ||A x-y||_1 = 5.874543e-04, REL_OBJ, iter = 1 ||f|| = 1.190896e+01, rel_norm = 6.326272e-03 Iteration 74: prox_L1: ||A x-y||_1 = 5.836567e-04, REL_OBJ, iter = 1 ||f|| = 1.183349e+01, rel_norm = 6.377798e-03 Iteration 75: prox_L1: ||A x-y||_1 = 5.799085e-04, REL_OBJ, iter = 1 ||f|| = 1.175905e+01, rel_norm = 6.330456e-03 Iteration 76: prox_L1: ||A x-y||_1 = 5.762086e-04, REL_OBJ, iter = 1 ||f|| = 1.168562e+01, rel_norm = 6.283128e-03 Iteration 77: prox_L1: ||A x-y||_1 = 5.726784e-04, REL_OBJ, iter = 1 ||f|| = 1.161473e+01, rel_norm = 6.104117e-03 Iteration 78: prox_L1: ||A x-y||_1 = 5.693167e-04, REL_OBJ, iter = 1 ||f|| = 1.154599e+01, rel_norm = 5.953348e-03 Iteration 79: prox_L1: ||A x-y||_1 = 5.659971e-04, REL_OBJ, iter = 1 ||f|| = 1.147744e+01, rel_norm = 5.972528e-03 Iteration 80: prox_L1: ||A x-y||_1 = 5.626564e-04, REL_OBJ, iter = 1 ||f|| = 1.140870e+01, rel_norm = 6.024828e-03 Iteration 81: prox_L1: ||A x-y||_1 = 5.592076e-04, REL_OBJ, iter = 1 ||f|| = 1.133881e+01, rel_norm = 6.164004e-03 Iteration 82: prox_L1: ||A x-y||_1 = 5.557740e-04, REL_OBJ, iter = 1 ||f|| = 1.127000e+01, rel_norm = 6.105728e-03 Iteration 83: prox_L1: ||A x-y||_1 = 5.523461e-04, REL_OBJ, iter = 1 ||f|| = 1.120135e+01, rel_norm = 6.128902e-03 Iteration 84: prox_L1: ||A x-y||_1 = 5.490294e-04, REL_OBJ, iter = 1 ||f|| = 1.113446e+01, rel_norm = 6.007185e-03 Iteration 85: prox_L1: ||A x-y||_1 = 5.458102e-04, REL_OBJ, iter = 1 ||f|| = 1.106845e+01, rel_norm = 5.963774e-03 Iteration 86: prox_L1: ||A x-y||_1 = 5.428167e-04, REL_OBJ, iter = 1 ||f|| = 1.100635e+01, rel_norm = 5.642328e-03 Iteration 87: prox_L1: ||A x-y||_1 = 5.398094e-04, REL_OBJ, iter = 1 ||f|| = 1.094494e+01, rel_norm = 5.610762e-03 Iteration 88: prox_L1: ||A x-y||_1 = 5.367349e-04, REL_OBJ, iter = 1 ||f|| = 1.088335e+01, rel_norm = 5.659114e-03 Iteration 89: prox_L1: ||A x-y||_1 = 5.337277e-04, REL_OBJ, iter = 1 ||f|| = 1.082368e+01, rel_norm = 5.513036e-03 Iteration 90: prox_L1: ||A x-y||_1 = 5.307465e-04, REL_OBJ, iter = 1 ||f|| = 1.076407e+01, rel_norm = 5.538139e-03 Iteration 91: prox_L1: ||A x-y||_1 = 5.277002e-04, REL_OBJ, iter = 1 ||f|| = 1.070330e+01, rel_norm = 5.677561e-03 Iteration 92: prox_L1: ||A x-y||_1 = 5.247591e-04, REL_OBJ, iter = 1 ||f|| = 1.064375e+01, rel_norm = 5.594169e-03 Iteration 93: prox_L1: ||A x-y||_1 = 5.218638e-04, REL_OBJ, iter = 1 ||f|| = 1.058464e+01, rel_norm = 5.585241e-03 Iteration 94: prox_L1: ||A x-y||_1 = 5.190691e-04, REL_OBJ, iter = 1 ||f|| = 1.052684e+01, rel_norm = 5.490833e-03 Iteration 95: prox_L1: ||A x-y||_1 = 5.162105e-04, REL_OBJ, iter = 1 ||f|| = 1.046877e+01, rel_norm = 5.546374e-03 Iteration 96: prox_L1: ||A x-y||_1 = 5.133454e-04, REL_OBJ, iter = 1 ||f|| = 1.041095e+01, rel_norm = 5.554373e-03 Iteration 97: prox_L1: ||A x-y||_1 = 5.105348e-04, REL_OBJ, iter = 1 ||f|| = 1.035392e+01, rel_norm = 5.507793e-03 Iteration 98: prox_L1: ||A x-y||_1 = 5.077203e-04, REL_OBJ, iter = 1 ||f|| = 1.029680e+01, rel_norm = 5.547089e-03 Iteration 99: prox_L1: ||A x-y||_1 = 5.048163e-04, REL_OBJ, iter = 1 ||f|| = 1.023834e+01, rel_norm = 5.710265e-03 Iteration 100: prox_L1: ||A x-y||_1 = 5.019636e-04, REL_OBJ, iter = 1 ||f|| = 1.018128e+01, rel_norm = 5.603764e-03 Iteration 101: prox_L1: ||A x-y||_1 = 4.991977e-04, REL_OBJ, iter = 1 ||f|| = 1.012600e+01, rel_norm = 5.459513e-03 Iteration 102: prox_L1: ||A x-y||_1 = 4.964243e-04, REL_OBJ, iter = 1 ||f|| = 1.007027e+01, rel_norm = 5.533968e-03 Iteration 103: prox_L1: ||A x-y||_1 = 4.936677e-04, REL_OBJ, iter = 1 ||f|| = 1.001526e+01, rel_norm = 5.493024e-03 Iteration 104: prox_L1: ||A x-y||_1 = 4.909084e-04, REL_OBJ, iter = 1 ||f|| = 9.961056e+00, rel_norm = 5.441454e-03 Iteration 105: prox_L1: ||A x-y||_1 = 4.882457e-04, REL_OBJ, iter = 1 ||f|| = 9.909012e+00, rel_norm = 5.252140e-03 Iteration 106: prox_L1: ||A x-y||_1 = 4.856786e-04, REL_OBJ, iter = 1 ||f|| = 9.858071e+00, rel_norm = 5.167453e-03 Iteration 107: prox_L1: ||A x-y||_1 = 4.831174e-04, REL_OBJ, iter = 1 ||f|| = 9.805974e+00, rel_norm = 5.312790e-03 Iteration 108: prox_L1: ||A x-y||_1 = 4.805846e-04, REL_OBJ, iter = 1 ||f|| = 9.753915e+00, rel_norm = 5.337252e-03 Iteration 109: prox_L1: ||A x-y||_1 = 4.780504e-04, REL_OBJ, iter = 1 ||f|| = 9.701870e+00, rel_norm = 5.364401e-03 Iteration 110: prox_L1: ||A x-y||_1 = 4.755384e-04, REL_OBJ, iter = 1 ||f|| = 9.650546e+00, rel_norm = 5.318268e-03 Iteration 111: prox_L1: ||A x-y||_1 = 4.730269e-04, REL_OBJ, iter = 1 ||f|| = 9.599239e+00, rel_norm = 5.344850e-03 Iteration 112: prox_L1: ||A x-y||_1 = 4.706240e-04, REL_OBJ, iter = 1 ||f|| = 9.549249e+00, rel_norm = 5.235006e-03 Iteration 113: prox_L1: ||A x-y||_1 = 4.682568e-04, REL_OBJ, iter = 1 ||f|| = 9.499868e+00, rel_norm = 5.198112e-03 Iteration 114: prox_L1: ||A x-y||_1 = 4.658559e-04, REL_OBJ, iter = 1 ||f|| = 9.450152e+00, rel_norm = 5.260802e-03 Iteration 115: prox_L1: ||A x-y||_1 = 4.634704e-04, REL_OBJ, iter = 1 ||f|| = 9.401244e+00, rel_norm = 5.202288e-03 Iteration 116: prox_L1: ||A x-y||_1 = 4.610314e-04, REL_OBJ, iter = 1 ||f|| = 9.351611e+00, rel_norm = 5.307439e-03 Iteration 117: prox_L1: ||A x-y||_1 = 4.586355e-04, REL_OBJ, iter = 1 ||f|| = 9.302976e+00, rel_norm = 5.227942e-03 Iteration 118: prox_L1: ||A x-y||_1 = 4.561855e-04, REL_OBJ, iter = 1 ||f|| = 9.253767e+00, rel_norm = 5.317661e-03 Iteration 119: prox_L1: ||A x-y||_1 = 4.537689e-04, REL_OBJ, iter = 1 ||f|| = 9.204937e+00, rel_norm = 5.304806e-03 Iteration 120: prox_L1: ||A x-y||_1 = 4.513584e-04, REL_OBJ, iter = 1 ||f|| = 9.156104e+00, rel_norm = 5.333350e-03 Iteration 121: prox_L1: ||A x-y||_1 = 4.489656e-04, REL_OBJ, iter = 1 ||f|| = 9.107532e+00, rel_norm = 5.333253e-03 Iteration 122: prox_L1: ||A x-y||_1 = 4.466455e-04, REL_OBJ, iter = 1 ||f|| = 9.059787e+00, rel_norm = 5.269961e-03 Iteration 123: prox_L1: ||A x-y||_1 = 4.443815e-04, REL_OBJ, iter = 1 ||f|| = 9.012881e+00, rel_norm = 5.204333e-03 Iteration 124: prox_L1: ||A x-y||_1 = 4.421174e-04, REL_OBJ, iter = 1 ||f|| = 8.966808e+00, rel_norm = 5.138142e-03 Iteration 125: prox_L1: ||A x-y||_1 = 4.398707e-04, REL_OBJ, iter = 1 ||f|| = 8.921768e+00, rel_norm = 5.048310e-03 Iteration 126: prox_L1: ||A x-y||_1 = 4.376518e-04, REL_OBJ, iter = 1 ||f|| = 8.877439e+00, rel_norm = 4.993440e-03 Iteration 127: prox_L1: ||A x-y||_1 = 4.354975e-04, REL_OBJ, iter = 1 ||f|| = 8.834612e+00, rel_norm = 4.847682e-03 Iteration 128: prox_L1: ||A x-y||_1 = 4.333922e-04, REL_OBJ, iter = 1 ||f|| = 8.792185e+00, rel_norm = 4.825492e-03 Iteration 129: prox_L1: ||A x-y||_1 = 4.313295e-04, REL_OBJ, iter = 1 ||f|| = 8.750112e+00, rel_norm = 4.808277e-03 Iteration 130: prox_L1: ||A x-y||_1 = 4.292336e-04, REL_OBJ, iter = 1 ||f|| = 8.707385e+00, rel_norm = 4.907012e-03 Iteration 131: prox_L1: ||A x-y||_1 = 4.271599e-04, REL_OBJ, iter = 1 ||f|| = 8.665161e+00, rel_norm = 4.872858e-03 Iteration 132: prox_L1: ||A x-y||_1 = 4.251899e-04, REL_OBJ, iter = 1 ||f|| = 8.624616e+00, rel_norm = 4.701022e-03 Iteration 133: prox_L1: ||A x-y||_1 = 4.232311e-04, REL_OBJ, iter = 1 ||f|| = 8.584106e+00, rel_norm = 4.719188e-03 Iteration 134: prox_L1: ||A x-y||_1 = 4.213895e-04, REL_OBJ, iter = 1 ||f|| = 8.545581e+00, rel_norm = 4.508244e-03 Iteration 135: prox_L1: ||A x-y||_1 = 4.196689e-04, REL_OBJ, iter = 1 ||f|| = 8.509271e+00, rel_norm = 4.267071e-03 Iteration 136: prox_L1: ||A x-y||_1 = 4.179827e-04, REL_OBJ, iter = 1 ||f|| = 8.473412e+00, rel_norm = 4.231988e-03 Iteration 137: prox_L1: ||A x-y||_1 = 4.164200e-04, REL_OBJ, iter = 1 ||f|| = 8.439230e+00, rel_norm = 4.050337e-03 Iteration 138: prox_L1: ||A x-y||_1 = 4.149570e-04, REL_OBJ, iter = 1 ||f|| = 8.406517e+00, rel_norm = 3.891361e-03 Iteration 139: prox_L1: ||A x-y||_1 = 4.135297e-04, REL_OBJ, iter = 1 ||f|| = 8.374930e+00, rel_norm = 3.771598e-03 Iteration 140: prox_L1: ||A x-y||_1 = 4.119276e-04, REL_OBJ, iter = 1 ||f|| = 8.341135e+00, rel_norm = 4.051708e-03 Iteration 141: prox_L1: ||A x-y||_1 = 4.104393e-04, REL_OBJ, iter = 1 ||f|| = 8.308681e+00, rel_norm = 3.905985e-03 Iteration 142: prox_L1: ||A x-y||_1 = 4.091572e-04, REL_OBJ, iter = 1 ||f|| = 8.279332e+00, rel_norm = 3.544828e-03 Iteration 143: prox_L1: ||A x-y||_1 = 4.081233e-04, REL_OBJ, iter = 1 ||f|| = 8.253942e+00, rel_norm = 3.076094e-03 Iteration 144: prox_L1: ||A x-y||_1 = 4.070496e-04, REL_OBJ, iter = 1 ||f|| = 8.227962e+00, rel_norm = 3.157553e-03 Iteration 145: prox_L1: ||A x-y||_1 = 4.062077e-04, REL_OBJ, iter = 1 ||f|| = 8.206548e+00, rel_norm = 2.609374e-03 Iteration 146: prox_L1: ||A x-y||_1 = 4.055263e-04, REL_OBJ, iter = 1 ||f|| = 8.188014e+00, rel_norm = 2.263612e-03 Iteration 147: prox_L1: ||A x-y||_1 = 4.050904e-04, REL_OBJ, iter = 1 ||f|| = 8.174446e+00, rel_norm = 1.659807e-03 Iteration 148: prox_L1: ||A x-y||_1 = 4.050326e-04, REL_OBJ, iter = 1 ||f|| = 8.167276e+00, rel_norm = 8.778889e-04 Iteration 149: prox_L1: ||A x-y||_1 = 4.055243e-04, REL_OBJ, iter = 1 ||f|| = 8.169892e+00, rel_norm = 3.202870e-04 Iteration 150: prox_L1: ||A x-y||_1 = 4.066153e-04, REL_OBJ, iter = 1 ||f|| = 8.184407e+00, rel_norm = 1.773411e-03 Iteration 151: prox_L1: ||A x-y||_1 = 4.079771e-04, REL_OBJ, iter = 1 ||f|| = 8.207584e+00, rel_norm = 2.823871e-03 Iteration 152: prox_L1: ||A x-y||_1 = 4.093566e-04, REL_OBJ, iter = 1 ||f|| = 8.235095e+00, rel_norm = 3.340669e-03 Iteration 153: prox_L1: ||A x-y||_1 = 4.106194e-04, REL_OBJ, iter = 1 ||f|| = 8.263113e+00, rel_norm = 3.390738e-03 Iteration 154: prox_L1: ||A x-y||_1 = 4.116046e-04, REL_OBJ, iter = 1 ||f|| = 8.287478e+00, rel_norm = 2.939974e-03 Iteration 155: prox_L1: ||A x-y||_1 = 4.122874e-04, REL_OBJ, iter = 1 ||f|| = 8.305993e+00, rel_norm = 2.229152e-03 Iteration 156: prox_L1: ||A x-y||_1 = 4.124923e-04, REL_OBJ, iter = 1 ||f|| = 8.313901e+00, rel_norm = 9.511318e-04 Iteration 157: prox_L1: ||A x-y||_1 = 4.122590e-04, REL_OBJ, iter = 1 ||f|| = 8.311170e+00, rel_norm = 3.285066e-04 Iteration 158: prox_L1: ||A x-y||_1 = 4.116456e-04, REL_OBJ, iter = 1 ||f|| = 8.298629e+00, rel_norm = 1.511275e-03 Iteration 159: prox_L1: ||A x-y||_1 = 4.105710e-04, REL_OBJ, iter = 1 ||f|| = 8.275538e+00, rel_norm = 2.790283e-03 Iteration 160: prox_L1: ||A x-y||_1 = 4.091478e-04, REL_OBJ, iter = 1 ||f|| = 8.244643e+00, rel_norm = 3.747266e-03 Iteration 161: prox_L1: ||A x-y||_1 = 4.073905e-04, REL_OBJ, iter = 1 ||f|| = 8.207523e+00, rel_norm = 4.522677e-03 Iteration 162: prox_L1: ||A x-y||_1 = 4.054199e-04, REL_OBJ, iter = 1 ||f|| = 8.166469e+00, rel_norm = 5.027161e-03 Iteration 163: prox_L1: ||A x-y||_1 = 4.035632e-04, REL_OBJ, iter = 1 ||f|| = 8.128401e+00, rel_norm = 4.683235e-03 Iteration 164: prox_L1: ||A x-y||_1 = 4.019224e-04, REL_OBJ, iter = 1 ||f|| = 8.096378e+00, rel_norm = 3.955255e-03 Iteration 165: prox_L1: ||A x-y||_1 = 4.005621e-04, REL_OBJ, iter = 1 ||f|| = 8.072982e+00, rel_norm = 2.898038e-03 Iteration 166: prox_L1: ||A x-y||_1 = 3.995469e-04, REL_OBJ, iter = 1 ||f|| = 8.059663e+00, rel_norm = 1.652552e-03 Iteration 167: prox_L1: ||A x-y||_1 = 3.989682e-04, REL_OBJ, iter = 1 ||f|| = 8.056919e+00, rel_norm = 3.405991e-04 Iteration 168: prox_L1: ||A x-y||_1 = 3.986566e-04, REL_OBJ, iter = 1 ||f|| = 8.059246e+00, rel_norm = 2.887421e-04 Iteration 169: prox_L1: ||A x-y||_1 = 3.986451e-04, REL_OBJ, iter = 1 ||f|| = 8.065504e+00, rel_norm = 7.758207e-04 Iteration 170: prox_L1: ||A x-y||_1 = 3.988375e-04, REL_OBJ, iter = 1 ||f|| = 8.073717e+00, rel_norm = 1.017358e-03 Iteration 171: prox_L1: ||A x-y||_1 = 3.991500e-04, REL_OBJ, iter = 1 ||f|| = 8.082527e+00, rel_norm = 1.089928e-03 Iteration 172: prox_L1: ||A x-y||_1 = 3.995251e-04, REL_OBJ, iter = 1 ||f|| = 8.091175e+00, rel_norm = 1.068851e-03 Iteration 173: prox_L1: ||A x-y||_1 = 3.999119e-04, REL_OBJ, iter = 1 ||f|| = 8.099034e+00, rel_norm = 9.703640e-04 Iteration 174: prox_L1: ||A x-y||_1 = 4.002668e-04, REL_OBJ, iter = 1 ||f|| = 8.105803e+00, rel_norm = 8.351039e-04 Iteration 175: prox_L1: ||A x-y||_1 = 4.005832e-04, REL_OBJ, iter = 1 ||f|| = 8.111535e+00, rel_norm = 7.066680e-04 Iteration 176: prox_L1: ||A x-y||_1 = 4.008209e-04, REL_OBJ, iter = 1 ||f|| = 8.115833e+00, rel_norm = 5.295371e-04 Iteration 177: prox_L1: ||A x-y||_1 = 4.009900e-04, REL_OBJ, iter = 1 ||f|| = 8.118919e+00, rel_norm = 3.800909e-04 Iteration 178: prox_L1: ||A x-y||_1 = 4.011085e-04, REL_OBJ, iter = 1 ||f|| = 8.120895e+00, rel_norm = 2.433577e-04 Iteration 179: prox_L1: ||A x-y||_1 = 4.012050e-04, REL_OBJ, iter = 1 ||f|| = 8.121966e+00, rel_norm = 1.317724e-04 Iteration 180: prox_L1: ||A x-y||_1 = 4.012684e-04, REL_OBJ, iter = 1 ||f|| = 8.122162e+00, rel_norm = 2.417612e-05 FORWARD_BACKWARD: Final relative evaluation: 2.417612e-05 ||f|| = 8.122162e+00 180 iterations Stopping criterion: REL_NORM
displaying the result
figure;
plot(1:N, x, 'o', 1:N, sol, 'xr'); legend('Original signal', 'Reconstructed signal');

Closing the toolbox
close_unlocbox();