`diag(Xc)*D*diag(Xc)'`

Where D is a matrix, and non diagonal lines also have values，Xc is a multidimensional complex variable

Is `D`

hermitian semidefinite? Otherwise this wont’ be convex. Although if `D`

is hermitian negative semidefinite, it would be concave. If neither of those, the expression can’t be used in CVX.

Yes，D is hermitian semidefinite，so I want to know how to write this with CVX,This problem has been bothering me for a long time. Thank you very much for your reply and help

You haven’t told us exactly what the form of Xc is. What you need is

`column_vector_conjugate_transpose*D*column_vector`

.

The multiplications must be conformal, which they are in my code. Your code is non-conformal, because `diag(matrix)`

is a column vector, not a row vector., whether in CVX or MATLAB, and the (1st) argument of `diag`

must be 2D, not 3D or higher.

The following would work:

```
variable Xc(5,5,3) complex
diag(Xc(:,:,1))'*D*diag(Xc(:,:,1))
diag(Xc(:,:,2))'*D*diag(Xc(:,:,2))
diag(Xc(:,:,3))'*D*diag(Xc(:,:,3))
```

Otr you could use

`quad_form(diag(Xc(:,:,1)),D)`

etc.

If the off-diagonal of the `Xc`

slices is never used, you could instead make `Xc`

a 5 by 3 array in this example, and use

`Xc(:,1)'*D*Xc(:,1)`

etc.

```
clc; clear all
N=128;
U_H=eye(N);
cvx_begin
variable x(N, 1) complex % 复数变量 x
minimize(diag(x)*U_H*diag(x)');
cvx_end
```

The above is my question. An error occurred while running the code, where a multiplication sign cannot be used. Xc is a 128 dimensional complex variable. How can this error be resolved，

My previous post was correct given what you stated. In your most recent post, `x`

is a vector. In MATLAB and CVX, `diag(vector)`

is a diagonal matrix; hence the error message you received.

Perhaps you want

`minimize(x'*U_H*x)`

which is just a standard quadratic forum, and is essentially athe same s the suggestion in my previous post, altered to reflect`x`

now being a vector, not a matrix.

Perhaps there is confusion as to what is meant by “multidimensional”. In MATLAB and CVX, is this is usually interpreted as the variable being an array having at least 3 dimensions,. and certainly at least 2. An 128 by 1 vector is usually not considered to be a multidimensional variable, but a 128 by 128 by 3 variable would be.

Thank you very much for your answer. I understand your previous post. Now, I would like to ask if the above question can be solved using CVX. If so, how can I write a covariance matrix related to the independent variable in CVX。

Have you formulated a convex optimization problem? That is your responsibility. Perhaps you need to reread, very carefully, the link previously provided.

You might find the material in Convex Optimization – Boyd and Vandenberghe to be of assistance. For example, Exercise 7.4. Or you might not.

I’ll check if my model is convex carefully.Thank you very much for your help.