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!
0 个评论
采纳的回答
Walter Roberson
2018-5-30
3 个评论
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 Center 和 File Exchange 中查找有关 Genetic Algorithm 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!