# HG changeset patch # User idamnjanovic # Date 1300116772 0 # Node ID e6191f5bb21b6ba90f79caaca3a568b703365eb0 # Parent ea9ef4bd71027d8c58a319060345ae5dc42eb409 diff -r ea9ef4bd7102 -r e6191f5bb21b util/SMALL_learn.m --- a/util/SMALL_learn.m Mon Mar 14 15:32:30 2011 +0000 +++ b/util/SMALL_learn.m Mon Mar 14 15:32:52 2011 +0000 @@ -20,12 +20,12 @@ fprintf('\nStarting Dictionary Learning %s... \n', DL.name); start=cputime; - + tStart=tic; if strcmpi(DL.toolbox,'KSVD') param=DL.param; param.data=Problem.b; - D = eval([DL.name,'(param, ''t'', 5);']); + D = eval([DL.name,'(param)']);%, ''t'', 5);']); elseif strcmpi(DL.toolbox,'KSVDS') param=DL.param; param.data=Problem.b; @@ -44,7 +44,31 @@ for i = 1: size(D,2) D(:,i)=D(:,i)/norm(D(:,i)); end + elseif strcmpi(DL.toolbox,'SMALL') + X = Problem.b; + param=DL.param; + + D = eval([DL.name,'(X, param);']); + % we need to make sure that columns are normalised to + % unit lenght. + + for i = 1: size(D,2) + D(:,i)=D(:,i)/norm(D(:,i)); + end + elseif strcmpi(DL.toolbox,'mpv2') + X = Problem.b(:,1:1:40000); + jD0 = mpv2.SimpleMatrix(DL.param.D); + jDicLea = mpv2.DictionaryLearning(jD0, 1,1); +% !!!!! MAYBE lambda is not needed for ILS - NEED TO CHECK!!!! + jDicLea.setLambda('L', DL.param.lambda, DL.param.lambda, 1000); + jDicLea.setVerbose(2); + jDicLea.setORMP(16, 1e-6, DL.param.abs); + eval(['jDicLea.',DL.name,'( X(:), DL.param.iternum );']); + jD = jDicLea.getDictionary(); + + D = reshape(jD.getAll(), size(X,1), DL.param.K); + % To introduce new dictionary learning technique put the files in % your Matlab path. Next, unique name for your toolbox needs % to be defined and also prefferd API for toolbox functions @@ -69,10 +93,11 @@ %% % Dictionary Learning time - +tElapsed=toc(tStart); DL.time = cputime - start; fprintf('\n%s finished task in %2f seconds. \n', DL.name, DL.time); - + fprintf('\n%s finished task in %2f seconds. \n', DL.name, tElapsed); +DL.time=tElapsed; % If dictionary is given as a sparse matrix change it to full DL.D = full(D);