# HELP！I don't know how to solve this problem

y = updateY(K,J,Nr,Ns,h_eff,noise,decodingorder,VBB); % Calculate the optimal value of auxiliary variable ym

``````    % Using CVX to solve convex optimization problems for optimizing power allocation {pkj}
cvx_begin quiet
cvx_solver mosek
variable VBB(Nrf, Ns, K, J) complex % The power of each sub message
expressions fq_r(K,J)  interference(Nr,Nr,K,J)% The rate of each sub message and user interference

for k = 1:K
for j = 1:J

[row,col] = find(decodingorder>decodingorder(k,j)); % Identify data streams that decoding order greater as interference

% Calculate interference on the (k, j) th data stream
for l = 1:length(col)
interference(:,:,k,j) = interference(:,:,k,j) +  square_pos(norm(h_eff(:,:,row(l)) * VBB(:,:,row(l),col(l))));
``````

% h_eff(:,:,row(l)) * VBB(:,:,row(l),col(l)) * VBB(:,:,row(l),col(l))’ * h_eff(:,:,row(l))';
end

``````                    % Calculate the equivalent rate of the (k, j) th data stream
fq_r(k,j) = log_det(eye(Ns) + 2*real(y(:,:,k,j)'*h_eff(:,:,k)*VBB(:,:,k,j))...
-y(:,:,k,j)'*(interference(:,:,k,j) + noise*eye(Nr))*y(:,:,k,j)) ./ log(2);

norm(VRF(:,:,k)*VBB(:,:,k,j)) <= sqrt(pkj_max(k,j));
sum(sum_square_abs(VBB(:,:,k,j))) <= pkj_max(k,j);

end
end
maximize sum(fq_r(:)) % objective function Q_sumrate
subject to
fq_r >= r_min; % Minimum data stream rate requirement
cvx_end
``````

There is a erro：

v( any( imag( x.basis_ ), 1 ) & v ) = NaN;

v = cvx_vexity( z );

-y(:,:,k,j)'(interference(:,:,k,j) + noiseeye(Nr))*y(:,:,k,j)) ./ log(2);

Perhaps CVX does not support matrix multiplication like A '* B * A. Is there any other equivalent conversion method that CVX can handle?

What are the dimensions of A and B? Which are input data? Do you have a factorization of B as C*C’?

My original question is Maximize Σ log (1+SINR). Transforming the problem into fq (V, Y) through fractional programming（You can see from the pictures in my comments）, when Y is given, fq is a convex optimization problem. In this convex optimization problem, there is a term similar to A '* B * A, where the dimension of matrix A is Nr x Ns, and B is Nr x Nr

What is the specific term you are having difficulty formulating in CVX? Make clear the dimensions of everything, what are variables and what is input data. Also, please supply the convexity proof.

The convex optimization problem aims to maximize fq. The variables are only VBB, and all other matrices are known. The problem lies in the expression within the red box. The dimension of matrix y is Nr x Ns, H is Nr x Nrf, and VBB is Nr fx Ns

``````x  = V'*H'*y;
x'*x

Or

(V'*H'*y)'*(V'*H'*y)
``````

I’ll let you add in the indexing and make it into a sum.

Sorry, I didn’t understand what you meant. Do you mean to turn the item in the red box into this?

Yes, plus of course the `sigma^2*y'*y` term

Okay, I’ll give it a try. I am not very good at matrix operations. Thank you very much！

There is a new error now.

Error corresponds to this item in the expression.

Did you forget to apply `real(...)` to the term which CVX says is complex affine?

I use real

You did not apply `real` to `noise`. Is that complex?

Now my program is like this：

The error is as follows:

Is the argument of `log_det` hermitian semidefinite?

yeah, The matrix in log_det is positively definite.

I don’t know what all the input data is, but that claim is not obvious to me.

Perhaps you can explicitly type the argument of log_det using Preformated text (don’t show an image) and prove it is hermitian semidefinite. When doing so, make clear what the dimensions of everything are. Please take your time to do this systematically and carefully, rather than rushing to post again.