ivan@155: % Maximum A Posteriori Estimation for Dictionary Learning ivan@155: % Y = input data (M X L matrix) ivan@155: % Phi = initial dictionary (M X N), e.g. random dictionary or first N data samples ivan@155: % lambda = regularization coefficient (||Phi*X-Y||_F)^2 + lambda*||X||_1 ivan@155: % IT + number of iterations ivan@155: % res = dictionary constraint. 'un' = unit colomn norm, 'bn' = bounded colomn norm ivan@155: function [Phiout,X,ert] = mapdl_cn(Y,Phi,lambda,IT,res) ivan@155: maxIT = 1000; ivan@155: [PhiN,PhiM] = size(Phi); ivan@155: RR1 = PhiM; ivan@155: %%%%%%%%%%%%%% ivan@155: % [PhiM,L] = size(ud); ivan@155: [PhiN,L] = size(Y); ivan@155: X = ones(PhiM,L); ivan@155: for it = 1:IT ivan@155: to = .1+svds(Phi,1); ivan@155: [PhiN,PhiM] = size(Phi); ivan@155: %%%% ivan@155: eps = 3*10^-4; ivan@155: map = 1; % Projecting on the selected space (0=no,1=yes) ivan@155: [X,l1err] = mm1(Phi,Y,X,to,lambda,maxIT,eps,map); %% Sparse approximation with Iterative Soft-thresholding ivan@155: ert(it) = l1err; ivan@155: %%% ivan@155: eps = 10^-7; ivan@155: mu = 10^-4; ivan@155: [Phi,X] = dict_update_MAP_cn(Phi,Y,X,mu,maxIT,eps,res); ivan@155: end ivan@155: Phiout = Phi;