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.

 採用された回答

John D'Errico
John D'Errico 2016 年 1 月 21 日
編集済み: John D'Errico 2016 年 1 月 21 日

0 投票

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 ExchangeGet Started with MATLAB についてさらに検索

製品

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by