comparison DL/two-step DL/dico_update.m @ 207:233e75809e4a luisf_dev

Accelerated the code for LGD and optimal grandient descent
author bmailhe
date Wed, 21 Mar 2012 14:12:25 +0000
parents 5140b0e06c22
children fd0b5d36f6ad
comparison
equal deleted inserted replaced
202:5bb579c9874e 207:233e75809e4a
84 dico(:,p) = pat; 84 dico(:,p) = pat;
85 end 85 end
86 end 86 end
87 case 'opt' 87 case 'opt'
88 for p = 1:nb_pattern 88 for p = 1:nb_pattern
89 vec : amp(p,:); 89 index = find(amp(p,:)~=0);
90 grad = res*vec'; 90 vec = amp(p,index);
91 grad = res(:,index)*vec';
91 if norm(grad) > 0 92 if norm(grad) > 0
92 pat = (vec*vec')*dico(:,p) + rho*grad; 93 pat = (vec*vec')*dico(:,p) + rho*grad;
93 pat = pat/norm(pat); 94 pat = pat/norm(pat);
94 if nargin >5 && strcmp(flow, 'sequential') 95 if nargin >5 && strcmp(flow, 'sequential')
95 res = res + (dico(:,p)-pat)*vec; 96 res(:,index) = res(:,index) + (dico(:,p)-pat)*vec;
97 end
98 dico(:,p) = pat;
99 end
100 end
101 case 'LGD'
102 for p = 1:nb_pattern
103 index = find(amp(p,:)~=0);
104 vec = amp(p,index);
105 grad = res(:,index)*vec';
106 if norm(grad) > 0
107 pat = (vec*vec')*dico(:,p) + 2*grad;
108 pat = pat/norm(pat);
109 if nargin >5 && strcmp(flow, 'sequential')
110 res(:,index) = res(:,index) + (dico(:,p)-pat)*vec;
96 end 111 end
97 dico(:,p) = pat; 112 dico(:,p) = pat;
98 end 113 end
99 end 114 end
100 case 'KSVD' 115 case 'KSVD'