MATLAB Answers

Using fminbnd on a Function with Multiple Outputs

19 views (last 30 days)
Thassio Matias
Thassio Matias on 10 Jan 2021
Commented: Thassio Matias on 10 Jan 2021
Hi,
I have a function called errorrms_tal, which is stored in a seperate .m file, and takes three inputs (x, y, z), while producing 3 outputs ( out1, out2, and out3):
[out1, out2, out3] = errorrms_tal(x,y,z);
I would now like to use MatLab's fminbnd to minimized out1 of my function errorrms_tal with respect to the variable x (leaving y and z as just a constants, i.e. not varied as part of the optimisation). Therefore I wanted to do something like the following:
x_optimum = fminbnd(@(x)errorrms_tal(x,y,z),x1,x2);
However, I also would like to know the outputs out2 a out3 of the function errorrms_tal, which is produced when the fminbnd calculate the x_optimum. How can I do it?
Many Thanks

  0 Comments

Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 10 Jan 2021
Edited: John D'Errico on 10 Jan 2021
Just evaluate your function one more time, after the optimization is done when you have the minimal location for x. This last time, you just need to return the other two output parameters.
x_optimum = fminbnd(@(x)errorrms_tal(x,y,z),x1,x2);
[~,out2,out3] = errorrms_tal(x_optimum,y,z);

  1 Comment

Thassio Matias
Thassio Matias on 10 Jan 2021
It cold be a good option. However, since the function must be evaluate one more time, it increases the computation time. Is there not another way to do this?

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by