0001
0002
0003 m = 1024; ns = 64; nc=64; k=round(0.1*nc);
0004 gmax=inline('max(sqrt(sum(reshape(x,[ns,nc]).^2)))','x','ns','nc');
0005 A=randn(m,ns,nc);
0006 I=randperm(nc);w0=zeros(ns,nc);w0(:,I(1:k))=randn(ns,k);
0007 bb=A(:,:)*w0(:)+randn(m,1);
0008 lambda=0.5*gmax(A(:,:)'*bb,ns,nc);
0009
0010 lambda = lambda*[1 0.1 0.01 1e-3 1e-4];
0011 time = zeros(size(lambda));
0012 spar = zeros(size(lambda));
0013 xx = zeros(ns*nc,length(lambda));
0014 t0 = cputime;
0015 xx1 = zeros(ns,nc);
0016 for ii=1:length(lambda)
0017 [xx1,stat]=dalsqgl(xx1,A(:,:),bb,lambda(ii));
0018 xx1=reshape(xx1,[ns,nc]);
0019 xx(:,ii)=xx1(:);
0020 time(ii)=cputime-t0;
0021 spec =sqrt(sum(xx1.^2));
0022 spar(ii)=sum(spec>10*median(spec))/nc;
0023 fprintf('lambda=%g sparsity=%g%% time=%g\n',lambda(ii), spar(ii)*100, time(ii));
0024 end
0025