Hello Mathieu,
Is $\nu$ an integer, or just a real number bigger than 1?
Ignoring $\nu$ for now, in Manopt you would write this as an optimization problem over a product manifold, as follows:
elements = struct();
elements.Sigma = sympositivedefinitefactory(n);
manifold = productmanifold(elements);
% You can get a sense for how this works by calling x = manifold.rand(); -- this creates a random point, as a structure with fields
x.mu and x.Sigma.
problem.M = manifold;
problem.cost = @(x) ....... cost function to be minimized, with inputs
x.mu and x.Sigma .... ;
Then you'd ideally define the gradient too. If you're lucky, automatic differentation will work "out of the box":
problem = manoptAD(problem);
If not, it may just be a matter of rewriting the cost function somewhat differently, or you may need to implement the gradient by hand in problem.grad or problem.egrad (which is faster than AD anyway) -- we can discuss more if questions come up then.
Best,
Nicolas