Mercurial > hg > pycsalgos
annotate tests/NESTAgentest.m @ 68:cab8a215f9a1 tip
Minor
author | Nic Cleju <nikcleju@gmail.com> |
---|---|
date | Tue, 09 Jul 2013 14:50:09 +0300 |
parents | e6a5f2173015 |
children |
rev | line source |
---|---|
nikcleju@47 | 1 % Run NESTA and save parameters and solutions as reference test data |
nikcleju@47 | 2 % to check if other algorithms are correct |
nikcleju@47 | 3 |
nikcleju@47 | 4 numA = 10; |
nikcleju@47 | 5 numY = 100; |
nikcleju@47 | 6 |
nikcleju@47 | 7 sizesA{1} = [50 100]; |
nikcleju@47 | 8 sizesA{2} = [20 25]; |
nikcleju@47 | 9 sizesA{3} = [10 120]; |
nikcleju@47 | 10 sizesA{4} = [15 100]; |
nikcleju@47 | 11 sizesA{5} = [70 100]; |
nikcleju@47 | 12 sizesA{6} = [80 100]; |
nikcleju@47 | 13 sizesA{7} = [90 100]; |
nikcleju@47 | 14 sizesA{8} = [99 100]; |
nikcleju@47 | 15 sizesA{9} = [100 100]; |
nikcleju@47 | 16 sizesA{10} = [250 400]; |
nikcleju@47 | 17 for i = 1:numA sizesA{i} = fliplr(sizesA{i}); end |
nikcleju@47 | 18 |
nikcleju@47 | 19 for i = 1:numA |
nikcleju@47 | 20 sz = sizesA{i}; |
nikcleju@47 | 21 cellA{i} = randn(sz); |
nikcleju@47 | 22 m = round((0.2 + 0.6*rand)*sz(2)); |
nikcleju@47 | 23 cellM{i} = randn(m,sz(2)); |
nikcleju@47 | 24 cellY{i} = randn(m, numY); |
nikcleju@47 | 25 %cellXinit{i} = zeros(sz(2), numY); |
nikcleju@47 | 26 for j = 1:numY |
nikcleju@47 | 27 cellEps{i}(j) = rand / 100; % restrict from 0 to 1% of measurements |
nikcleju@47 | 28 end |
nikcleju@47 | 29 end |
nikcleju@47 | 30 opt_TolVar = 1e-5; |
nikcleju@47 | 31 opt_Verbose = 0; |
nikcleju@47 | 32 opt_muf = 1e-3; |
nikcleju@47 | 33 opt_l2solver = 'pseudoinverse'; |
nikcleju@47 | 34 |
nikcleju@47 | 35 %load NESTAtestdata |
nikcleju@47 | 36 tic |
nikcleju@47 | 37 for i = 1:numA |
nikcleju@47 | 38 [U,S,V] = svd(cellM{i},'econ'); |
nikcleju@47 | 39 opts.U = cellA{i}; |
nikcleju@47 | 40 opts.Ut = cellA{i}'; |
nikcleju@47 | 41 opts.USV.U=U; |
nikcleju@47 | 42 opts.USV.S=S; |
nikcleju@47 | 43 opts.USV.V=V; |
nikcleju@47 | 44 opts.TolVar = opt_TolVar; |
nikcleju@47 | 45 opts.Verbose = opt_Verbose; |
nikcleju@47 | 46 for j = 1:numY |
nikcleju@47 | 47 cellXr{i}(:,j) = NESTA(cellM{i}, [], cellY{i}(:,j), opt_muf, cellEps{i}(j) * norm(cellY{i}(:,j)), opts); |
nikcleju@47 | 48 end |
nikcleju@47 | 49 disp(['Finished sz ' num2str(i)]) |
nikcleju@47 | 50 end |
nikcleju@47 | 51 toc |
nikcleju@47 | 52 |
nikcleju@47 | 53 save NESTAtestdata |