nikcleju@47: % Run NESTA and save parameters and solutions as reference test data nikcleju@47: % to check if other algorithms are correct nikcleju@47: nikcleju@47: numA = 10; nikcleju@47: numY = 100; nikcleju@47: nikcleju@47: sizesA{1} = [50 100]; nikcleju@47: sizesA{2} = [20 25]; nikcleju@47: sizesA{3} = [10 120]; nikcleju@47: sizesA{4} = [15 100]; nikcleju@47: sizesA{5} = [70 100]; nikcleju@47: sizesA{6} = [80 100]; nikcleju@47: sizesA{7} = [90 100]; nikcleju@47: sizesA{8} = [99 100]; nikcleju@47: sizesA{9} = [100 100]; nikcleju@47: sizesA{10} = [250 400]; nikcleju@47: for i = 1:numA sizesA{i} = fliplr(sizesA{i}); end nikcleju@47: nikcleju@47: for i = 1:numA nikcleju@47: sz = sizesA{i}; nikcleju@47: cellA{i} = randn(sz); nikcleju@47: m = round((0.2 + 0.6*rand)*sz(2)); nikcleju@47: cellM{i} = randn(m,sz(2)); nikcleju@47: cellY{i} = randn(m, numY); nikcleju@47: %cellXinit{i} = zeros(sz(2), numY); nikcleju@47: for j = 1:numY nikcleju@47: cellEps{i}(j) = rand / 100; % restrict from 0 to 1% of measurements nikcleju@47: end nikcleju@47: end nikcleju@47: opt_TolVar = 1e-5; nikcleju@47: opt_Verbose = 0; nikcleju@47: opt_muf = 1e-3; nikcleju@47: opt_l2solver = 'pseudoinverse'; nikcleju@47: nikcleju@47: %load NESTAtestdata nikcleju@47: tic nikcleju@47: for i = 1:numA nikcleju@47: [U,S,V] = svd(cellM{i},'econ'); nikcleju@47: opts.U = cellA{i}; nikcleju@47: opts.Ut = cellA{i}'; nikcleju@47: opts.USV.U=U; nikcleju@47: opts.USV.S=S; nikcleju@47: opts.USV.V=V; nikcleju@47: opts.TolVar = opt_TolVar; nikcleju@47: opts.Verbose = opt_Verbose; nikcleju@47: for j = 1:numY nikcleju@47: cellXr{i}(:,j) = NESTA(cellM{i}, [], cellY{i}(:,j), opt_muf, cellEps{i}(j) * norm(cellY{i}(:,j)), opts); nikcleju@47: end nikcleju@47: disp(['Finished sz ' num2str(i)]) nikcleju@47: end nikcleju@47: toc nikcleju@47: nikcleju@47: save NESTAtestdata