Matrix Completion.m
From Wikimization
(Difference between revisions)
| Line 4: | Line 4: | ||
=== test_SVT.m === | === test_SVT.m === | ||
<pre> | <pre> | ||
| + | % Written by: Emmanuel Candes | ||
| + | % Email: emmanuel@acm.caltech.edu | ||
| + | % Created: October 2008 | ||
| + | |||
%% Set path and global variables | %% Set path and global variables | ||
global SRB | global SRB | ||
Revision as of 00:13, 16 February 2009
Matlab demonstration of Cai, Candès, & Shen
A Singular Value Thresholding Algorithm for Matrix Completion, 2008
test_SVT.m
% Written by: Emmanuel Candes
% Email: emmanuel@acm.caltech.edu
% Created: October 2008
%% Set path and global variables
global SRB
SRB = true;
%% Setup a matrix
randn('state',2008);
rand('state',2008);
n = 1000; r = 10;
M = randn(n,r)*randn(r,n);
df = r*(2*n-r);
oversampling = 5; m = 5*df;
Omega = randsample(n^2,m);
data = M(Omega);
%% Set parameters and solve
p = m/n^2; delta = 1.2/p;
maxiter = 500;
tol = 1e-4;
%% Approximate minimum nuclear norm solution by SVT algorithm
tic
[U,S,V,numiter] = SVT(n,Omega,data,delta,maxiter,tol);
toc
%% Show results
X = U*S*V';
disp(sprintf('The relative error on Omega is: %d ', norm(data-X(Omega))/norm(data)))
disp(sprintf('The relative recovery error is: %d ', norm(M-X,'fro')/norm(M,'fro')))
disp(sprintf('The relative recovery in the spectral norm is: %d ', norm(M-X)/norm(M)))