bmailhe@244: function [ sol ] = unloc_solver( b, A, param,name ) bmailhe@244: %UNLOC_SOLVER Solve the minimisation problem using UNLOCBOX toolbox bmailhe@244: % bmailhe@244: % argmin_x ||x||_1 such that ||Ax-b||_2 < sima_t bmailhe@244: bmailhe@244: if nargin<3, param=struct; end bmailhe@244: bmailhe@244: % set parameters bmailhe@244: if ~isfield(param, 'verbose'), param.verbose = 1; end bmailhe@244: if ~isfield(param, 'T'), param.T = 256; end bmailhe@244: if ~isfield(param, 'sigma'), param.sigma = 1; end bmailhe@244: if ~isfield(param, 'max_iter'), param.max_iter = 100; end bmailhe@244: if ~isfield(param, 'epsilon'), param.epsilon = 1e-3; end bmailhe@244: bmailhe@244: [b2,f1,f2,param] = small_to_unloc(b,A,param); bmailhe@244: bmailhe@244: if strcmpi(name, 'Douglas_Rachford') bmailhe@244: sol=douglas_rachford(b2,f2,f1,param); bmailhe@244: elseif strcmpi(name, 'Forward_Backard') bmailhe@244: sol=forward_backward(b2,f1,f2,param); bmailhe@244: elseif strcmpi(name, 'ADMM') bmailhe@244: opL= @(x) x; bmailhe@244: sol=admm(b2,f1,f2,opL,param); bmailhe@244: else bmailhe@244: error('UNLocBox tells you: Unknown solver name!') bmailhe@244: end; bmailhe@244: bmailhe@244: bmailhe@244: bmailhe@244: end bmailhe@244: