Passing Structure through fminsearch
23 views (last 30 days)
Show older comments
There is a code that I am trying to improve by eliminating the global variables. The only issue is is that the function that is used for fminsearch has other functions inside that need the global variables. So I am thinking of passing a structure through fminsearch with an anonymous function. However, when I run the new code it seams like fminsearch is not performing properly becuase it goes at double the speed and not return a good answer.
Here is the original code calling the fminsearch function:
[p,c] = fminsearch('cost',p0); % OPTIMIZATION
%function for fminsearch:
function [c,meanErr] = cost(p)
global PHIs TAUs Parameters
%rest of code
end
Instead of having the variables of PHIs, TAUs, and Parameters as global, I send them to a structure S. Here is how I am trying to pass the structure through fminsearch:
S.p = p;
[p,c] = fminsearch(@(p) costLeg(S), S.p); % OPTIMIZATION
%function for fminsearch:
function [c,meanErr] = costLeg(S)
%rest of code
end
Am I passing this structure correctly? How can I double check that I am?
Thanks!
0 Comments
Accepted Answer
Matt J
on 1 Apr 2024 at 22:10
Edited: Matt J
on 1 Apr 2024 at 22:14
If p is the unknown parameter vector, it must be passed separately from the fixed parameters,
S.PHI=...
S.TAU=...
[p,c] = fminsearch(@(p) costLeg(p,S), p0); % OPTIMIZATION
%function for fminsearch:
function [c,meanErr] = costLeg(p,S)
%rest of code
end
More Answers (0)
See Also
Categories
Find more on Optimization in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!