Mercurial > hg > smallbox
diff DL/two-step DL/dico_color.m @ 152:485747bf39e0 ivand_dev
Two step dictonary learning - Integration of the code for dictionary update and dictionary decorrelation from Boris Mailhe
author | Ivan Damnjanovic lnx <ivan.damnjanovic@eecs.qmul.ac.uk> |
---|---|
date | Thu, 28 Jul 2011 15:49:32 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DL/two-step DL/dico_color.m Thu Jul 28 15:49:32 2011 +0100 @@ -0,0 +1,46 @@ +function colors = dico_color(dico, mu) + % DICO_COLOR cluster a dictionary in pairs of high correlation atoms. + % Called by dico_decorr. + % + % Parameters: + % -dico: the dictionary + % -mu: the correlation threshold + % + % Result: + % -colors: a vector of indices. Two atoms with the same color have a + % correlation greater than mu + + numAtoms = length(dico); + colors = zeros(numAtoms, 1); + + % compute the correlations + G = abs(dico'*dico); + G = G-eye(size(G)); + + % iterate on the correlations higher than mu + c = 1; + maxCorr = max(max(G)); + while maxCorr > mu + % find the highest correlated pair + x = find(max(G)==maxCorr, 1); + y = find(G(x,:)==maxCorr, 1); + + % color them + colors(x) = c; + colors(y) = c; + c = c+1; + + % make sure these atoms never get selected again + G(x,:) = 0; + G(:,x) = 0; + G(y,:) = 0; + G(:,y) = 0; + + % find the next correlation + maxCorr = max(max(G)); + end + + % complete the coloring with singletons + index = find(colors==0); + colors(index) = c:c+length(index)-1; +end