Cvx form for R=a(log2(1+b*c/a*d))?

The formulation I provided earlier was valid based on what you said were the variables and constants. When you then showed an expression involving Temp_D, I assumed it was a vector version of the earlier expression, and therefore Temp_D is a constant, which it’s not. Hence the error message.

As for the expression in the most recent post, I have no reason to think it’s either concave or convex, due to the (...)^(alpha/2), which is an exponential. If that expression is concave, you need to prove it.

For your future reference, please note the requirements on the arguments of rel_entr.

help rel_entr

 rel_entr   Scalar relative entropy.
    rel_entr(X,Y) returns an array of the same size as X+Y with the 
    relative entropy function applied to each element:
                       { X.*LOG(X./Y) if X >  0 & Y >  0,
       rel_entr(X,Y) = { 0            if X == 0 & Y >= 0,
                       { +Inf         otherwise.
    X and Y must either be the same size, or one must be a scalar. If X and
    Y are vectors, then SUM(rel_entr(X,Y)) returns their relative entropy.
    If they are PDFs (that is, if X>=0, Y>=0, SUM(X)==1, SUM(Y)==1) then
    this is equal to their Kullback-Liebler divergence SUM(KL_DIV(X,Y)).
    -SUM(rel_entr(X,1)) returns the entropy of X.

    Disciplined convex programming information:
        rel_entr(X,Y) is convex in both X and Y, nonmonotonic in X, and
        nonincreasing in Y. Thus when used in CVX expressions, X must be
        real and affine and Y must be concave. The use of rel_entr(X,Y) in
        an objective or constraint will effectively constrain both X and Y 
        to be nonnegative, hence there is no need to add additional
        constraints X >= 0 or Y >= 0 to enforce this.