frd
is a CVX expression. If CVX completes with Status: Inaccurate/Solved
or Status: Solved
, the optimal values of the declared CVX variables are in the MATLAB variables having those names. In general, the values of CVX expressions after CVX completes are not guaranteed to correspond to the optimal values of the CVX variables; however, in this casefrd
and 4*noise*hsr*hLI*hrd*x
are both equal to 2.0792e-32
after CVX completes.using SDPT3 as solver.
Why do you think frd
should equal sqrt(x)
? There is nothing in your program which would force that. If you want frd
to equal sqrt(x)
. then you need to change the problem formulation.
Also, your problem scaling is terrible. Any solution of your program as is is essentially meaningless. You need to make non-zero numbers much close to one in magnitude.
I recommend you not use cvx_quiet(true)
or cvx_expert true
until you are confident everything is working and being solved correctly.
Given you use of log(cvx_expression),
I recommend you follow the advice in CVXQUAD: How to use CVXQUAD's Pade Approximant instead of CVX's unreliable Successive Approximation for GP mode, log, exp, entr, rel_entr, kl_div, log_det, det_rootn, exponential cone. CVXQUAD's Quantum (Matrix) Entropy & Matrix Log related functions .