如何在Matlab脚本文件中最大化一个函数



我有一个函数要优化,以找到它的最大值(使用Matlab)。仿真模型的功能部分,因此它被存储在Matlab脚本文件中。

注意,在函数使用的正常情况下,我可以使用fminbnd命令进行最大化,然后取函数的负值。这样

g(x) = -f (x)

[x fval] = fminbnd(@(x)-tan(cos(x)),3,8)

但我正在寻找一种方法来做找到最大值使用(或-ve函数找到最大值)的脚本函数。

如果我正确理解您正在寻找的内容,则有一组命令,该命令采用一些输入变量,并产生结果,但这些命令位于脚本文件而不是MATLAB函数中。您希望在脚本上运行fminbnd,而不是将命令重写为函数?

显而易见的问题是,为什么不选择简单的方法,将代码放入函数中呢?假设你不能,出于某种原因,如何构建一个"容器"函数运行你的脚本,并返回结果?比如:

function result = containerFunction(myScriptName, inputData)
% Input Arguments:
% myScriptName : string, filename (not extension), e.g. 'myScript'
% inputData : any data compatible with the script defined in myScriptName
% Output Arguments:
% result : must be created by the script defined in myScriptName
eval(myScriptName);

你可以调用containerFunction from fminbnd

最新更新