How to pass additional variables into a function handle that is taken as an argument?

83 次查看(过去 30 天)
How to pass additional variables into a function handle that is taken as an argument?
For example, the integral function is used as:
Q = integral(fun,A,B)
Where fun is initialized as the function handle:
fun = @myFunction
That can be otherwise evaluated as:
y = myFunction(x)
I understand if I need to pass in additional parameters into myFunction, I can do the following:
y = myFunction(x,a,b,c,d)
But how do I do that with the integral function that takes the handle as an argument? Would it be like this?
Q = integral(fun(x,a,b,c),A,B)
Just to put it into perspective, myFunction would be an error evaluating function that returns 20 results at a time in a 20x1 column array. The 20x1 array is then minimized in an optimization algorithm such as the genetic algorithm with multiple objectives, so things like nested functions will not work so well in terms of sharing the extra parameters. Currently, I am using global variables which is working fine but I would like to try to avoid the potential problems as much as possible.
Thanks!

采纳的回答

Walter Roberson
Walter Roberson 2018-5-30
  3 个评论
Guillaume
Guillaume 2018-5-30
Of course, your function can be defined with an anonymous function.
Following your example, let's say you want to use myFunction (defined any way you want) with integral with additional arguments a, b, c, and d, then
Q = integral(@(x) myFunction(x, a, b, c, d), A, B)
where @(x) myFunction(x, a, b, c, d) is the anonymous function that binds the arguments to myFunction.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Genetic Algorithm 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by