n = 10;
l = -rand(n,1);
u = rand(n,1);
x0 = randn(n,1);
fprintf(1,'Computing the analytical solution ...');
pc_x0 = x0;
pc_x0(find(x0<=l)) = l(find(x0<=l));
pc_x0(find(x0>=u)) = u(find(x0>=u));
fprintf(1,'Done! \n');
fprintf(1,'Computing the optimal solution by solving a QP ...');
cvx_begin quiet
variable x(n)
minimize ( norm(x-x0) )
x <= u;
x >= l;
cvx_end
fprintf(1,'Done! \n');
disp('-----------------------------------------------------------------');
disp('Verifying that the analytical solution and the solution obtained via QP are equal: ');
[pc_x0 x]
Computing the analytical solution ...Done!
Computing the optimal solution by solving a QP ...Done!
-----------------------------------------------------------------
Verifying that the analytical solution and the solution obtained via QP are equal:
ans =
-0.2028 -0.2028
-0.1987 -0.1987
0.5252 0.5252
-0.0562 -0.0562
0.5135 0.5136
0.3967 0.3967
0.0196 0.0196
0.4005 0.4006
-0.9318 -0.9318
0.3750 0.3751