First of all, I read the other convex ./ convex errors and “why isnt CVX accepting my model” topic but couldnt figured out how to pass this error.

The original error was :

Error using .*

Disciplined convex programming error:

Cannot perform the operation: {convex} ./ {convex}

Error in ./ (line 19)

z = times( x, y, ‘./’ );

Error in * (line 36)

z = feval( oper, x, y );

Error in / (line 15)

z = mtimes( x, y, ‘rdivide’ );

Error in optimclosedform (line 69)

maximize( abs(rx_intended) / abs(rx_interference + rx_noise) );

and I used quad_over_lin as suggested but it now requires second argument to be concave.

Optimization problem is a basic SINR calculation and I dont think it should be that hard so I hink I miss some basic thing in my code.

I’m just trying to find transmit power(scalar) value that maximizes SINR

Here is the code :

```
cvx_begin
variable p([64 10]);
W_ZF = H' * inv(H * H');
W_ZF = (W_ZF / norm(W_ZF,'fro'));
rx_noise = (1/sqrt(2)) * randn(1,1) *db2pow(noisevariancedb) + (1/sqrt(2)) * 1j * randn(1,1)*db2pow(noisevariancedb) *10e7;
tx_symbols = W_ZF;
tx_symbols = (tx_symbols.' ./ (N*K*mean(abs(W_ZF.')))).' ;
tx_symbols = tx_symbols .* p ;
k = 1;
H_k = H(k,:);
rx_gains = H_k * tx_symbols ;
rx_intended = rx_gains(:,k);
rx_interference = sum(rx_gains(:,[1:k-1 k+1:end]));
maximize( quad_over_lin(rx_intended , abs(rx_interference + sqrt(rx_noise) ) ) );
subject to
sum(sum(p)) < 100
cvx_end
```

and the error :

Error using cvx/quad_over_lin

The second argument must be concave.

Error in optimclosedform (line 69)

maximize( quad_over_lin(rx_intended , abs(rx_interference + sqrt(rx_noise) ) ) );