How can I convert a function with multivariable input to a function with single vector input?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi, I want to use fmincon, and fmincon can deal with only function with single vector input.
When my formula is as below, it works well.
fun = @(x) x(1)^2+x(2)^2;
fmincon(fun,[1,1])
However, if the function form has multiple input as below, it does not work.
Is there any way to convert the fun2 below to the function with single vector input as the example above?
fun2 = @(x,y) x^2+y^2;
fmincon(fun2,[1,1]) % this does not work
0 comentarios
Respuestas (1)
Star Strider
el 31 de Mzo. de 2022
Do essentially the same thing, creating it with another anonymous function around it —
fun2 = @(x,y) x^2+y^2;
fmincon(@(b)fun2(b(1),b(2)),[1,1]) % now it works!
.
2 comentarios
Star Strider
el 31 de Mzo. de 2022
My pleasure!
I am not aware of any. The ‘shell’ anonymous function would have to be writen specifically for each funciton.
For example, if the function needed to have extra parameters passed to it:
fun2 = @(x,y,a,b) a*x^2+b*y^2;
a = 3;
b = 11;
fmincon(@(b)norm(fun2(b(1),b(2),a,b)),[1,1]) % now it works!
There could not possibly be a general rule that would apply to all functions.
.
Ver también
Categorías
Más información sobre Symbolic Math Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!