使用 matlab 进行符号二次优化
symbolic Quadratic optimization using matlab
我正在尝试最小化以下表达式:
我正在尝试在给定 y、x^H 和 A 的情况下最小化 x,其中 U 和 W 作为单位矩阵。
我尝试了 fmincon 但没有成功,这就是我所做的
[B,C] = fmincon(@(X-OD).'*(X-OD)+(Ycount-A*X).'*(Ycount-A*X),0,[],[],[],[],0,inf)
任何帮助将不胜感激
我将忽略问题的 "symbolic" 部分。为了从数值上解决这个问题,我推荐两种方法:
使用 CVX
下载包 CVX。代码将是:
cvx_begin
variables x(n)
minimize(quad_form(x - xh, U_inv) + quad_form(y - A*x, W_inv))
subject to:
x >= 0
cvx_end
做一些数学运算并使用 Matlab 函数 quadprog
做一些代数,你可以证明你的问题等价于:
minimize (over x) .5x'(inv(U) + A'inv(W)*A)x +(-y'*inv(W)*A-xh'*inv(U))*x
subject to: x>=0
这些你可以使用Matlab函数quadprog
。
H = U_inv + A'*W_inv*A; %'
f = -y'*W_inv*A - xh'*U_inv;
Aeq = [];
beq = [];
LB = zeros(n, 1);
UB = [];
x_method2 = quadprog(H, f, [], [], Aeq, beq, LB, UB);
我正在尝试最小化以下表达式:
我正在尝试在给定 y、x^H 和 A 的情况下最小化 x,其中 U 和 W 作为单位矩阵。
我尝试了 fmincon 但没有成功,这就是我所做的
[B,C] = fmincon(@(X-OD).'*(X-OD)+(Ycount-A*X).'*(Ycount-A*X),0,[],[],[],[],0,inf)
任何帮助将不胜感激
我将忽略问题的 "symbolic" 部分。为了从数值上解决这个问题,我推荐两种方法:
使用 CVX
下载包 CVX。代码将是:
cvx_begin
variables x(n)
minimize(quad_form(x - xh, U_inv) + quad_form(y - A*x, W_inv))
subject to:
x >= 0
cvx_end
做一些数学运算并使用 Matlab 函数 quadprog
做一些代数,你可以证明你的问题等价于:
minimize (over x) .5x'(inv(U) + A'inv(W)*A)x +(-y'*inv(W)*A-xh'*inv(U))*x
subject to: x>=0
这些你可以使用Matlab函数quadprog
。
H = U_inv + A'*W_inv*A; %'
f = -y'*W_inv*A - xh'*U_inv;
Aeq = [];
beq = [];
LB = zeros(n, 1);
UB = [];
x_method2 = quadprog(H, f, [], [], Aeq, beq, LB, UB);