aboutsummaryrefslogtreecommitdiff
path: root/l1eq_example.m
diff options
context:
space:
mode:
authorEugeniy E. Mikhailov <evgmik@gmail.com>2021-01-29 16:23:05 -0500
committerEugeniy E. Mikhailov <evgmik@gmail.com>2021-01-29 16:23:05 -0500
commit3983eb46023c1edd00617729ba929057fda8d0bd (patch)
tree816ad084f355000656c43da9160f1c257bbb1ddc /l1eq_example.m
downloadl1magic-3983eb46023c1edd00617729ba929057fda8d0bd.tar.gz
l1magic-3983eb46023c1edd00617729ba929057fda8d0bd.zip
Initial import from https://statweb.stanford.edu/~candes/software/l1magic/v1.11
Additional Clean up of Mac dirs and tex generated files
Diffstat (limited to 'l1eq_example.m')
-rw-r--r--l1eq_example.m58
1 files changed, 58 insertions, 0 deletions
diff --git a/l1eq_example.m b/l1eq_example.m
new file mode 100644
index 0000000..d67cf6f
--- /dev/null
+++ b/l1eq_example.m
@@ -0,0 +1,58 @@
+% l1eq_example.m
+%
+% Test out l1eq code (l1 minimization with equality constraints).
+%
+% Written by: Justin Romberg, Caltech
+% Email: jrom@acm.caltech.edu
+% Created: October 2005
+%
+
+% put key subdirectories in path if not already there
+path(path, './Optimization');
+path(path, './Data');
+
+% To reproduce the example in the documentation, uncomment the
+% two lines below
+%load RandomStates
+%rand('state', rand_state);
+%randn('state', randn_state);
+
+% signal length
+N = 512;
+% number of spikes in the signal
+T = 20;
+% number of observations to make
+K = 120;
+
+% random +/- 1 signal
+x = zeros(N,1);
+q = randperm(N);
+x(q(1:T)) = sign(randn(T,1));
+
+% measurement matrix
+disp('Creating measurment matrix...');
+A = randn(K,N);
+A = orth(A')';
+disp('Done.');
+
+% observations
+y = A*x;
+
+% initial guess = min energy
+x0 = A'*y;
+
+% solve the LP
+tic
+xp = l1eq_pd(x0, A, [], y, 1e-3);
+toc
+
+% large scale
+% Afun = @(z) A*z;
+% Atfun = @(z) A'*z;
+% tic
+% xp = l1eq_pd(x0, Afun, Atfun, y, 1e-3, 30, 1e-8, 200);
+% toc
+
+
+
+