ivan@154: function [x , numiter, time, x_path] = wrapper_ALPS_toolbox(b, A, param) ivan@154: %% SMALL wrapper for ALPS toolbox ivan@154: % ivan@154: % Function gets as input ivan@154: % b - measurement vector ivan@154: % A - dictionary ivan@154: % K - desired sparsity level ivan@154: % param - structure containing additional parameters ivan@154: % Output: ivan@154: % x - sparse solution ivan@154: % numiter - number of iterations ivan@154: % time - time needed to solve the problem# ivan@154: % x_path - matrix containing x after every iteration ivan@154: ivan@154: % Centre for Digital Music, Queen Mary, University of London. ivan@154: % This file copyright 2011 Ivan Damnjanovic. ivan@154: % ivan@154: % This program is free software; you can redistribute it and/or ivan@154: % modify it under the terms of the GNU General Public License as ivan@154: % published by the Free Software Foundation; either version 2 of the ivan@154: % License, or (at your option) any later version. See the file ivan@154: % COPYING included with this distribution for more information. ivan@154: % ivan@154: %% ivan@154: ivan@154: if isfield(param, 'sparsity') ivan@154: sparsity = param.sparsity; ivan@154: else ivan@154: printf('\nAlebraic Pursuit algorithms require desired sparsity level.\n("sparsity" field in solver parameters structure)\n '); ivan@154: return ivan@154: end ivan@154: ivan@154: if isfield(param, 'memory') ivan@154: memory = param.memory; ivan@154: else ivan@154: memory = 0; ivan@154: end ivan@154: ivan@154: if isfield(param, 'mode') ivan@154: mode = param.mode; ivan@154: else ivan@154: mode = 0; ivan@154: end ivan@154: if isfield(param, 'tolerance') ivan@154: tolerance = param.tolerance; ivan@154: else ivan@154: tolerance = 1e-5; ivan@154: end ivan@154: if isfield(param, 'iternum') ivan@154: iternum = param.iternum; ivan@154: else ivan@154: iternum = 300; ivan@154: end ivan@154: if isfield(param, 'verbose') ivan@154: verbose = param.verbose; ivan@154: else ivan@154: verbose = 0; ivan@154: end ivan@154: if isfield(param, 'tau') ivan@154: tau = param.tau; ivan@154: else ivan@154: tau = 1/2; ivan@154: end ivan@154: if isfield(param, 'useCG') ivan@154: useCG = param.useCG; ivan@154: else ivan@154: useCG = 0; ivan@154: end ivan@154: if isfield(param, 'mu') ivan@154: mu = param.mu; ivan@154: else ivan@154: mu = 0; ivan@154: end ivan@154: training_size = size(b,2); ivan@154: x=zeros(size(A,2),training_size); ivan@154: for i = 1:training_size ivan@154: [x(:,i), numiter, time, x_path] = AlgebraicPursuit(b(:,i), A, sparsity, 'memory', memory,... ivan@154: 'mode', mode, 'tolerance', tolerance, 'ALPSiterations', iternum, ... ivan@154: 'verbose', verbose, 'tau', tau, 'useCG', useCG, 'mu', mu); ivan@154: end