Mercurial > hg > smallbox
diff DL/two-step DL/SMALL_two_step_DL.m @ 169:290cca7d3469 danieleb
Added dictionary decorrelation functions and test script for ICASSP paper.
author | Daniele Barchiesi <daniele.barchiesi@eecs.qmul.ac.uk> |
---|---|
date | Thu, 29 Sep 2011 09:46:52 +0100 |
parents | 8324c7ea6602 |
children | 68fb71aa5339 |
line wrap: on
line diff
--- a/DL/two-step DL/SMALL_two_step_DL.m Tue Sep 20 15:52:33 2011 +0100 +++ b/DL/two-step DL/SMALL_two_step_DL.m Thu Sep 29 09:46:52 2011 +0100 @@ -30,7 +30,7 @@ % initialize the dictionary % -if (isfield(DL.param,'initdict')) +if (isfield(DL.param,'initdict')) && ~isempty(DL.param.initdict); if (any(size(DL.param.initdict)==1) && all(iswhole(DL.param.initdict(:)))) dico = sig(:,DL.param.initdict(1:dictsize)); else @@ -108,7 +108,7 @@ % main loop % for i = 1:iternum - disp([num2str(i) '/' num2str(iternum)]); + %disp([num2str(i) '/' num2str(iternum)]); Problem.A = dico; solver = SMALL_solve(Problem, solver); [dico, solver.solution] = dico_update(dico, sig, solver.solution, ... @@ -119,7 +119,13 @@ dico = dico_decorr_symetric(dico, mu, solver.solution); case 'tropp' [n m] = size(dico); - dico = grassmannian(n,m,[],[],[],dico,true); + dico = grassmannian(n,m,[],[],[],dico); + case 'barchiesi' + [n m] = size(dico); + params.nIter = 100; + dico = iterativeprojections(n,m,[],[],[],dico); + [~, ~, W] = rotatematrix(Problem.b,dico*solver.solution,'conjgradlie',params); + dico = W*dico; otherwise end