Fmincon optimization for complex vectors
8 次查看(过去 30 天)
显示 更早的评论
I'm having an optimization problem where the objective function and the constraints have log terms , the optimization variable is a 2d complex vector
When using fmincon I get an error that implies that optimizing over a complex variable is not allowed in fmincon
The problem is
Max log2(abs(h1*w(1))) st log2(abs(h2*w(2)))<epsilon
The optimization vector is w
Thanks
0 个评论
回答(1 个)
Walter Roberson
2016-1-31
Break each optimization variable up into two pieces, one for the real part, one for the imaginary part:
function w4 = opt_driver(h1, h2)
obj = @(w) -objective(w, h1, h2);
nl = @(w) nonlcon(w, h1, h2);
w4 = fmincon(obj, [], [], [], [], nl);
function [c, ceq] = nonlcon(w, h1, h2)
ceq = [];
%positive value means the constraint is violated
c = log2(abs(h2* (w(3)+1i*w(4)) )) >= epsilon;
function f = objective(w, h1, h2)
f = log2(abs(h1* (w(1)+1i*w(2)) ));
The result would be a vector of 4 real values, with your w(1) being w4(1)+1i*w4(2) and your w(2) being w4(3)+1i*w4(4)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!