aboutsummaryrefslogtreecommitdiff
path: root/l1qc_example.m
diff options
context:
space:
mode:
Diffstat (limited to 'l1qc_example.m')
-rw-r--r--l1qc_example.m57
1 files changed, 57 insertions, 0 deletions
diff --git a/l1qc_example.m b/l1qc_example.m
new file mode 100644
index 0000000..6c2d9a9
--- /dev/null
+++ b/l1qc_example.m
@@ -0,0 +1,57 @@
+% l1qc_example.m
+%
+% Test out l1qc code (l1 minimization with quadratic constraint).
+%
+% Written by: Justin Romberg, Caltech
+% Email: jrom@acm.caltech.edu
+% Created: October 2005
+%
+
+% put optimization code in path if not already there
+path(path, './Optimization');
+
+% signal length
+N = 512;
+
+% number of spikes to put down
+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.');
+
+% noisy observations
+sigma = 0.005;
+e = sigma*randn(K,1);
+y = A*x + e;
+
+% initial guess = min energy
+x0 = A'*y;
+
+% take epsilon a little bigger than sigma*sqrt(K)
+epsilon = sigma*sqrt(K)*sqrt(1 + 2*sqrt(2)/sqrt(K));
+
+tic
+xp = l1qc_logbarrier(x0, A, [], y, epsilon, 1e-3);
+toc
+
+% large scale
+% Afun = @(z) A*z;
+% Atfun = @(z) A'*z;
+% tic
+% xp = l1qc_logbarrier(x0, Afun, Atfun, y, epsilon, 1e-3, 50, 1e-8, 500);
+% toc
+
+
+
+