Pass values to a function when using fminunc

8 次查看(过去 30 天)
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.

采纳的回答

John D'Errico
John D'Errico 2016-1-21
编辑:John D'Errico 2016-1-21
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 个)

类别

Help CenterFile Exchange 中查找有关 Solver-Based Nonlinear Optimization 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by