# Please write below problem in CVX

I have attached the optimization problem above, Please write the MATLAB code in cvx where
H_k = (1/sqrt(2))(randn(Mk,N)+1jrandn(Mk,N)) ; % MIMO channel matrix, and PT is the transmit power. Thanks

The objective is an affine function of `log_det`, so can be entered “as is”, except for dividing by `log(2)`, although that doesn’t affect the argmax. You should be aware of that from reading the CVX Users’ Guide.

`trace(Pk*Pk')` can be reformulated as `square_pos(norm(Pk,'fro'))`, But it is numerically better to not do the squaring of the norm, and instead take the sqrt of the RHS.

In the future, please do what you can, and ask for help only on the needed part.

So, according to you this is fine right?

And even can I use
sum_square(real(P_1(:))) <= pt; instead of (norm(P_1,‘fro’)) <= sqrt(pt); as constraint?

The program looks o.k., but I suggest not using `quiet` until you’re sure everything is working properly. I doubt you need the symmettrizing step `X = (X+X')/2`, but I don’t think it should hurt.

As for `sum_square(real(P_1(:))) `, it is not equivalent unless `P_1` is real to begin with, in which case there is no point to the `real(...)`. If `P_1` were complex, `sum_square_abs((P_1(:))` would be equivalent to `square_pos(norm(P_1,'fro'))` As you have written the code, `P_1` is (implicitly) declared to be real.

As I wrote earlier, it is numerically better to use `sqrt(RHS)` and not do the squaring on the LHS,

If P_1 were complex, how shall I write constraint sum_square_abs(P_1(:)) <= pt by using sqrt(RHS)? Is it equivalent to this sum_abs(P_1(:)) <= sqrt(pt) ? otherwise how shall I write? (here H_1 is complex values matrix of size M1xN)

Also, here after removing quiet all below constraints are working fine (showing “Status: Solved” in the command window, and even all these constraints are giving almost same optimal value as output i.e., cvx_optval values are not varying much ):

sum_square(real(P_1(:))) <= pt;
(norm(P_1,‘fro’)) <= sqrt(pt);
sum_square(real(P_1)) <= pt;
square_pos(norm(P_1,‘fro’)) <= pt;
sum_square_abs(P_1(:)) <= pt;

Which one is better to use as constraint here? And how to write last constraint-5 using sqrt(RHS)? Thanks

I provided my recommendation of what to use. If the problem is well-behaved numerically 9nice input data) it may not matter. If it is not well-behaved, the form I recommended is the best.

Please tell how to write this constraint by using sqrt(RHS) for complex P_1, is it sum_abs(P_1(:)) <= sqrt(pt) ? or how?

`norm(P_1,'fro') <= sqrt(pt)`

Hi, are you reproducing “Downlink MIMO-RSMA With Successive Null-Space Precoding”?
I think the constraint is wrong.
The correct one should be tr(P_k)<=Pt.

Yes, I was reproducing that paper only. But in the paper they have given tr(P_k*P_k’) <= pt (with this I was getting error), so trace(P_k) <= pt is final constraint right??
Bro, if possible, please will you contact me? I have some small queries in it, but I will not disturb you much. My contact number is +91 8095451922 (Gmail: rajashekhar8877@gmail.com ). Please please please contact me, I am fully upset now. Otherwise you can give your contact details, I will reach out to you. Thank you…

I guess you require the simulation codes. Please check out my GitHub. The code will be released this week. Hope this helps.

Thank you for your contribution. Actually, I want simulation codes mainly for RSMA/Rate-splitting related. So, apart from you and Prof Bruno Clerckx website, do you know any authors who provided their simulated codes of the paper? Please will you send that links?