Using fmincon to maximize a complex scalar function
조회 수: 1 (최근 30일)
이전 댓글 표시
N = 1;
h = sqrt(0.5)*(randn(1,N)+1i*randn(1,N));
g = sqrt(0.5)*(randn(N,1)+1i*randn(N,1));
phi0 = zeros(N,1);
lb = zeros(N,1);
ub = 2*pi*ones(N,1);
obj = @(phi)-((h*diag(exp(1i*phi))*g));
[sol,fval] = fmincon(obj,phi0,[],[],[],[],lb,ub)
phi1 = -(angle(h)+angle(g.'));
If in the above code i am trying to maximize ((h*diag(exp(1i*phi))*g)) where all h,g are complex scalar. Why matlab is giving such error, is it because objective function is complex, or some other reason?
댓글 수: 0
채택된 답변
Walter Roberson
2022년 10월 14일
편집: Walter Roberson
2022년 10월 14일
Function to minimize, specified as a function handle or function name. fun is a function that accepts a vector or array x and returns a real scalar f, the objective function evaluated at x.
So, yes, the fact that the objective function is complex is a problem. The maximum of complex numbers is not mathematically defined.
Are you trying to find something like the vector that is "most orthagonal" to the inputs ? If so then you should consider the square of the norm.
추가 답변 (1개)
Matt J
2022년 10월 14일
It is because your objective is returning a complex value at phi0.
>> obj(phi0)
ans =
1.3978 + 1.8395i
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!