luis@190
|
1
|
luis@190
|
2 %DICTIONARY UPDATE STEP
|
luis@190
|
3 if strcmpi(typeUpdate,'mocod') %if update is MOCOD create parameters structure
|
luis@190
|
4 mocodParams = struct('zeta',DL.param.zeta,... %coherence regularization factor
|
luis@190
|
5 'eta',DL.param.eta,... %atoms norm regularization factor
|
luis@190
|
6 'Dprev',dico); %previous dictionary
|
luis@190
|
7 % dico = dico_update(dico,sig,solver.solution,typeUpdate,flow,learningRate,mocodParams);
|
luis@190
|
8 if ~isfield(DL.param,'decFcn'), DL.param.decFcn = 'none'; end
|
luis@190
|
9
|
luis@190
|
10 dico = dico_update_mocod(dico,sig,solver.solution,typeUpdate,flow,learningRate,mocodParams);
|
luis@190
|
11
|
luis@190
|
12 else
|
luis@190
|
13 [dico, solver.solution] = dico_update(dico, sig, solver.solution, ...
|
luis@190
|
14 typeUpdate, flow, learningRate);
|
luis@190
|
15 dico = normcols(dico);
|
luis@190
|
16 end
|
luis@190
|
17
|
luis@190
|
18 switch lower(DL.param.decFcn)
|
luis@190
|
19 case 'ink-svd'
|
luis@190
|
20 dico = dico_decorr_symetric(dico,mu,solver.solution);
|
luis@190
|
21 case 'grassmannian'
|
luis@190
|
22 [n m] = size(dico);
|
luis@190
|
23 dico = grassmannian(n,m,[],0.9,0.99,dico);
|
luis@190
|
24 case 'shrinkgram'
|
luis@190
|
25 dico = shrinkgram(dico,mu);
|
luis@190
|
26 case 'iterproj'
|
luis@190
|
27 dico = iterativeprojections(dico,mu,Problem.b1,solver.solution);
|
luis@190
|
28 otherwise
|
luis@190
|
29 end
|
luis@190
|
30 |