Pass values to a function when using fminunc

I am trying to call fminunc in a script file on a function defined in another file. The problem is that I want to give parameters to this function (e.g. 'y' and 'dt'), although it is a function of x.
So I have in my myfunc.m something like this:
function [f df] = myfunc(y,dt)
f = @(x) (x - y)^2 / (2 * dt);
if nargout>1
df = @(x) ((x - y) / dt);
end
end
Then in my other script file, I have something like this:
dt = 0.1;
options = optimset('GradObj','on');
for i = 1:n
y = randn;
result = fminunc(myfunc(y,dt), 0, options);
end
The function 'res' is a function of x, but I want to be able to give it values that change as the for-loop is iterated through, and I am not quite sure how to do that. Any help would be appreciated.

 采纳的回答

Learn to use function handles. (Properly.) And learn what the optimizers expect for arguments.
function [f df] = res(x,y,dt)
f = (x - y)^2 / (2 * dt);
if nargout>1
df = ((x - y) / dt);
end
...
result = fminunc(@(x) res(x,y,dt), 0, options);
A bit of a boring objective function.

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Get Started with MATLAB 的更多信息

产品

标签

Community Treasure Hunt

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

Start Hunting!

Translated by