CVX does not allow division of variables (except in limited circumstances in gp mode).

Presuming eta is constrained to >= 0, you can move the denominator in the constraint to the right hand side. Then the objective can be dealt with by linear fractional programming, per section 4.3.2 “Linear-fractional programming” in https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf

For future difficulties, you should show us the exact error messages you received.

These comments are relative to problem P as shown in your most recent post. My comments don’t address whether problem P corresponds to whatever problem you really want to solve.

What is the value of K? Your code is written as though it is 1; although you have sum(eta).

Your first constraint has >= instead of <=, and does not include the factor (2^R - 1) on the right-hand side. You also omitted Beta, which you can get away with using this input data, because Beta = , but if it ever changed, your code would be wrong. If eta is declared as variable eta(K), that would make it a column vector, and if Beta were K by 1, then you could use .* in the constraint, which would produce the required ‘K’ constraints using just one MATLAB statement, which is faster for CVX and saves code compared to using a for loop.

Should eta and P_R be constrained to be >= 0 ? if not, how do you guarantee the original denominator is positive, as is required to move it to the right-hand side?

You also have sloppy coding practices, such as setting the value of rho, then setting it again before it is used.

I am not saying this is the entirety of what’s wrong with your code.