Fmincon optimization for complex vectors
8 views (last 30 days)
Show older comments
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 Comments
Answers (1)
Walter Roberson
on 31 Jan 2016
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)
See Also
Categories
Find more on Get Started with Optimization Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!