eucl_proj_rect.m

来自「斯坦福大学Grant和Boyd教授等开发的凸优化matlab工具箱」· M 代码 · 共 42 行

M
42
字号
% Euclidean projection on a rectangle% Section 8.1.1, Boyd & Vandenberghe "Convex Optimization"% Joelle Skaf - 10/07/05%% The projection of x0 on a rectangle C = {x | l <= x <= u} is given by%           minimize || x - x0 ||^2%               s.t.    l <= x <= u% It is also given by P_C(x0)_k = l_k       if  x0_k <= l_k%                                 x0_k      if  l_k <= x0_k <= u_k%                                 u_k       if  x0_k >= u_k% Input data: generate vectors l and u such that l < 0 < un  = 10;l  = -rand(n,1);u  = rand(n,1);x0 = randn(n,1);% Analytical solutionfprintf(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');% Solution via QPfprintf(1,'Computing the optimal solution by solving a QP ...');cvx_begin    cvx_quiet true    variable x(n)    minimize ( norm(x-x0) )    x <= u;    x >= l;cvx_endfprintf(1,'Done! \n');% Verificationdisp('-----------------------------------------------------------------');disp('Verifying that the analytical solution and the solution obtained via QP are equal: ');[pc_x0 x]

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?