how can i define an orthogonal matrix variable in cvx?

any help is greatly appreciated

How do you intend to use it?

```
variable X(n,n)
X'*X == eye(n)
```

is non-convex and not allowed by CVX. Actually, `X'*X i`

s not even allowed by CVX.

Did you carefully read and study the CVX FAQ link https://www.google.com/search?client=firefox-b-1-d&q=cvx+faq I posted in my reply on your previous thread Quadratic nonconvex inequality constraint ? The first thing you need to do before using CVX for a problem is to determine that it is (other than possible binary or integer constraints) a convex optimization problem.

if you have a problem with orthogonality constraints, then either

- You need a clever reformulation
- Use a non-convex nonlinear optimizer
- Perform Riemannian Optimization using, for example, the Stiieffel, Grassmann, or related manifold. You could consider using MANOPT https://www.manopt.org/tutorial.html . If your math background is strong enough, you can read â€śOptimization Algorithms on Matrix Manifoldsâ€ť by P.-A. Absil, R. Mahony & R. Sepulchre https://press.princeton.edu/absil ans subsequent papers by them and their students and others.

1 Like