I want to minimize f(x) = trace(\sqrt{X'*X}A), where X is an matrix variable and A is a known matrix. I tried the following code:

```
cvx_begin
variable x(d,d)
minimize(trace(sqrt(sum_square_abs(x))*A))
subject to
x(sp_index) == M(sp_index)
cvx_end
```

However, there are still errors as following:

```
Error using cvx/sqrt (line 61)
Disciplined convex programming error:
Illegal operation: sqrt( {convex} ).
Error in Test_CVX_Iterative_Optimal (line 34)
minimize(trace(sqrt(sum_square_abs(x))*A))
```

So how should I solve this problem by CVX? Looking forward to your help! Thanks very much!

Update:

Thanks to @DavidKetcheson , I should use `sqrtm()`

rather than `sqrt`

. To represent trace(\sqrt{X^TX}) I should use `trace_sqrtm(sum_square_abs(X))`

. However, I need to represent trace(\sqrt{X^TX}A), and I don’t know how to represent it by a valid CVX expression.

I tried

```
minimize(trace(sqrtm(sum_square_abs(x))*A))
```

to replace `sqrt`

in the original, but I got the following error

```
Undefined function 'schur' for input arguments of type 'cvx'.
Error in sqrtm (line 32)
[Q, T] = schur(A,'complex'); % T is complex Schur form.
Error in Test_WeightNucNorm (line 35)
minimize(trace(sqrtm(sum_square_abs(x))*A))
```

I understand now that `sqrtm()`

function is not implemented in CVX, so I have the error ’ Undefined function ‘schur’ for input arguments of type ‘cvx’.’. But my problem is still not solved.

I think I should use:

```
minimize(trace_sqrtm(sum_square_abs(x))*A)
```

But I still get error:

```
Error using cvx/trace_sqrtm (line 9)
Input must be affine.
Error in Test_WeightNucNorm (line 40)
minimize(trace_sqrtm(sum_square_abs(x))*A)
```

Important update

Thanks to @k20 , I made a mistake!! This is not the weighted nuclear norm of matrix X, but the weighted trace of \sqrt{X^TX}!! Now my problem becomes that: how to represent the weighted nuclear norm of a matrix X, where X is CVX variable, A is a diagonal weight matrix. I tried to find a CVX function which give me all the singular values of variable X, but I haven’t found such a function.

I can almost make conclusion that CVX cannot solve this problem. I need to find some other algorithms.