Matlab中如何直接获取优化的目标函数最优值fval?
直接获取fminbnd的最优值输出
当然可以直接获取目标函数的最优值fval,不用先保存最优参数x,这里给你几种符合Matlab语法的实用方法:
最推荐的简洁写法:用波浪线
~忽略不需要的第一个输出,直接接收第二个输出[~, fval] = fminbnd(myfunction, -1, 1);这种方式是Matlab官方提倡的,代码清晰易读,执行效率也高。
类似你设想的"直接索引"写法:如果非要用类似
part的思路,可以把函数的多输出打包成元胞数组再提取,不过写法稍繁琐:outputs = cell(1,2); [outputs{:}] = fminbnd(myfunction, -1, 1); fval = outputs{2};一行匿名函数包装写法:如果想在一行内完成,也可以用匿名函数包裹调用逻辑:
fval = (function() [~,v] = fminbnd(myfunction,-1,1); v)();
需要注意的是,Matlab的函数输出数量默认由调用时指定的接收变量数量决定——直接单独调用fminbnd(...)只会返回第一个输出x,但只要明确指定接收第二个输出(哪怕用~占位),函数就会返回对应的fval。
内容的提问来源于stack exchange,提问作者Iron Soles
相关产品推荐
相关产品推荐

