ivan@155: clear ivan@155: IT = 1000; % Number of iterations ivan@155: R = 3:7; % Sparsity of the signals ivan@155: SN = 5; % Number of trials ivan@155: M = 20; % Signal space dimension ivan@155: N = 40; % Ambient space dimension ivan@155: L = 32*N; % Number of training signals ivan@155: ivan@155: ParamGen(M,N,L,R,SN) % Generating generic problems ivan@155: ivan@155: %%%% Dictionary recovery algorithms ivan@155: for sn = 1:SN ivan@155: for r = R ivan@155: mmdlcn_exactRec_demo(IT,r,sn,'un') ivan@155: mapcn_exactRec_demo(IT,r,sn,'bn') ivan@155: ksvd_exactRec_demo(IT,r,sn) ivan@155: modcn_exactRec_demo(IT,r,sn) ivan@155: end ivan@155: end ivan@155: %%%%%%% ivan@155: Tre = .99; ivan@155: for k = R ivan@155: for i=1:SN ivan@155: load(['RDLl1',num2str(M),'t',num2str(IT),'ikiun',num2str(k),'v1d',num2str(i),'.mat']) ivan@155: nrRDLu(i,k-R(1)+1) = sum(max(abs((Phid'*Phi)))>=Tre); ivan@155: %%%%%% ivan@155: load(['MAPl1',num2str(M),'t',num2str(IT),'ikiun',num2str(k),'v1d',num2str(i),'.mat']) ivan@155: nrMAP(i,k-R(1)+1) = sum(max(abs((Phid'*Phi)))>=Tre); ivan@155: %%%%%% ivan@155: load(['KSVDl1',num2str(M),'t',num2str(IT),'ikiun',num2str(k),'v1d',num2str(i),'.mat']) ivan@155: nrKSVD(i,k-R(1)+1) = sum(max(abs((Phid'*Phi)))>=Tre); ivan@155: %%%%%% ivan@155: load(['MODl1',num2str(M),'t',num2str(IT),'ikiun',num2str(k),'v1d',num2str(i),'.mat']) ivan@155: nrMOD(i,k-R(1)+1) = sum(max(abs((Phid'*Phi)))>=Tre); ivan@155: end ivan@155: end ivan@155: clf ivan@155: errorbar(R+.01,10*mean(nrRDLu,1)/4,std(nrRDLu,0,1),'k-.') ivan@155: hold on ivan@155: errorbar(R-.01,10*mean(nrKSVD,1)/4,std(nrKSVD,0,1),'r*-') ivan@155: errorbar(R+.01,10*mean(nrMOD,1)/4,std(nrMOD,0,1),'b-v') ivan@155: errorbar(R-.01,10*mean(nrMAP,1)/4,std(nrMAP,0,1),'b-^') ivan@155: axis([2.5 7.5 15 105]); ivan@155: title('Constrained column-norm dictionaries') ivan@155: xlabel('Sparsity (# of non-zero elements in each coefficient vector)') ivan@155: ylabel(['Average percents of exact recovery',sprintf('\n'),'after ',num2str(IT),' iterations']) ivan@155: grid on ivan@155: legend('MM Unit norm','K-SVD','MOD','MAPbased-DL'); ivan@155: axis([2.8 7.2 -5 105])