fmincon optimize matrices of different size

2 views (last 30 days)
Jing Xie on 8 Oct 2021
Commented: Jing Xie on 11 Oct 2021
Ciao everyone.
I am trying to use fmincon for an optimization task. And I am not sure if fmincon can do this.
For an easy example:
There is a matrix x1 (size 3*3), and there is another matrix x2(size 4*4)
The objective function is
fun = A1*(x1-A)^2*A1'+ B1*(x2-B)^2*B1'
size of A1 is 1*3
A is 3*3
B1 is 1*4
B is 4*4
so we get objective function as a scalar.
The normal approach is to reshape the x1 and x2 and put them into a single vector x for optimization.
My question is that is there a way to formulate the x as x = [x1, x2] directly as matrices of different sizes?

Matt J on 8 Oct 2021
Edited: Matt J on 8 Oct 2021
x1=optimvar('x1',3,3);
x2=optimvar('x2',4,4);
fun = fcn2optimexpr( @(x1,x2) A1*(x1-A)^2*A1'+ B1*(x2-B)^2*B1' ,x1,x2)
p=optimproblem('Objective',fun);
sol=solve(p)
Jing Xie on 11 Oct 2021
Thanks a lot! That works!

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!