```
indent preformatted text by 4 spaces
Nt = 10;
Nrf = 4;
h = rand(Nt,1)+1i*rand(Nt,1);
f1 = rand(Nrf,1)+1i*rand(Nrf,1);
F1 = rand(Nt,Nrf)+1i*rand(Nt,Nrf);
cvx_begin
variable F(Nt,Nrf) complex
minimize (real(h'*F*(f1*f1')*F'*h))
subject to
norm(F,'fro')<=1
cvx_end
```

the hessisan matrix of the objective function is 2(\mathbf{f}\mathbf{f}^H )\otimes(\mathbf{h}\mathbf{h}^H) is semidefinite, thus the objective function is a convex function

sorry, it is convex. so you can only minimize it in CVX.

`minimize(norm(h'*F*f1,'fro'))`

thanks you very much, i have got it

The norm(,‘fro’) trick works here, and is especially useful when there is trace(matrix). It is a good formulation here.

But in this case, it would also be sufficient to apply “grouping” via parentheses, which ensure that a vector transpose is multiplied by itself, which is allowed by CVX as constituting a convex expression because it is a convex quadratic.

`minimize((f1'*F'*h)'*(f1'*F'*h))`

as a side bonus, the `real`

is not necessary when doing it this way.

or

```
x = f1'*F'*h;
minimize(x'*x)
```

ok, thank you very much, i have got it