将常量传递给fminsearch

soo*_*ise 4 matlab fminsearch

如何将常量传递给fminsearch?所以,如果我有一个功能:

f(x,y,z),如何使用固定值x进行fminsearch?

fminsearch(@f, [0,0,0]);
Run Code Online (Sandbox Code Playgroud)

我知道我可以编写一个新函数并对其进行fminsearch:

function returnValue = f2(y, z)

returnValue = f(5, y, z);

...

fminsearch(@f2, [0,0]);
Run Code Online (Sandbox Code Playgroud)

我的要求是,我需要在不定义新功能的情况下这样做.谢谢!!!

And*_*ein 6

您可以使用匿名函数:

fminsearch(@(x) f(5,x) , [0,0]);
Run Code Online (Sandbox Code Playgroud)

您也可以使用嵌套函数:

function MainFunc()
    z = 1;
    res = fminsearch(@f2, [0,0]);

    function out = f2(x,y)
        out = f(x,y,z);
    end
end
Run Code Online (Sandbox Code Playgroud)

您还可以使用getappdata传递数据.