Candes.m

From Wikimization

(Difference between revisions)
Jump to: navigation, search
Line 1: Line 1:
<pre>
<pre>
-
%Emmanuel Candes, California Institute of Technology, June 6, 2007
+
%Emmanuel Candes, California Institute of Technology, June 6 2007, IMA Summerschool.
-
%IMA Summerschool
+
%Transcribed by Jon Dattorro.
-
 
+
%Fails on 7th consecutive run after Matlab R2007b startup. CVX version 1.2 (build 656).
-
n = 512; % Size of the signal
+
clear all, close all
 +
n = 512; % Size of signal
m = 64; % Number of samples (undersample by a factor 8)
m = 64; % Number of samples (undersample by a factor 8)
Line 17: Line 18:
b = A*x0;
b = A*x0;
-
%% Solve l1 using CVX
+
% Solve l1 using CVX
cvx_begin
cvx_begin
variable x(n);
variable x(n);

Revision as of 21:07, 1 July 2008

%Emmanuel Candes, California Institute of Technology, June 6 2007, IMA Summerschool.
%Transcribed by Jon Dattorro.
%Fails on 7th consecutive run after Matlab R2007b startup.  CVX version 1.2 (build 656).
clear all, close all                
n = 512;                            % Size of signal
m = 64;                             % Number of samples (undersample by a factor 8)

k = 0:n-1;  t = 0:n-1;
F = exp(-i*2*pi*k'*t/n)/sqrt(n);    % Fourier matrix
freq = randsample(n,m);
A = [real(F(freq,:)); 
     imag(F(freq,:))];              % Incomplete Fourier matrix

S = 28;
support = randsample(n,S);
x0 = zeros(n,1);  x0(support) = randn(S,1);
b = A*x0;

% Solve l1 using CVX 
cvx_begin
    variable x(n);
    minimize(norm(x,1));
    A*x == b;
cvx_end

norm(x - x0)/norm(x0)
figure, plot(1:n,x0,'b*',1:n,x,'ro'), legend('original','decoded')

CVX

Personal tools