luis@190: luis@190: %DICTIONARY UPDATE STEP luis@190: if strcmpi(typeUpdate,'mocod') %if update is MOCOD create parameters structure luis@190: mocodParams = struct('zeta',DL.param.zeta,... %coherence regularization factor luis@190: 'eta',DL.param.eta,... %atoms norm regularization factor luis@190: 'Dprev',dico); %previous dictionary luis@190: % dico = dico_update(dico,sig,solver.solution,typeUpdate,flow,learningRate,mocodParams); luis@190: if ~isfield(DL.param,'decFcn'), DL.param.decFcn = 'none'; end luis@190: luis@190: dico = dico_update_mocod(dico,sig,solver.solution,typeUpdate,flow,learningRate,mocodParams); luis@190: luis@190: else luis@190: [dico, solver.solution] = dico_update(dico, sig, solver.solution, ... luis@190: typeUpdate, flow, learningRate); luis@190: dico = normcols(dico); luis@190: end luis@190: luis@190: switch lower(DL.param.decFcn) luis@190: case 'ink-svd' luis@190: dico = dico_decorr_symetric(dico,mu,solver.solution); luis@190: case 'grassmannian' luis@190: [n m] = size(dico); luis@190: dico = grassmannian(n,m,[],0.9,0.99,dico); luis@190: case 'shrinkgram' luis@190: dico = shrinkgram(dico,mu); luis@190: case 'iterproj' luis@190: dico = iterativeprojections(dico,mu,Problem.b1,solver.solution); luis@190: otherwise luis@190: end luis@190: