我在Matlab中有一个非常简单的函数:
function [val] = rmsMin(z)
Z1 = mainFig.UserData.Z1;
Z2 = mainFig.UserData.Z2;
val = rms(Z1 - Z2 + z);
end
我正在尝试使用函数 fminbnd 找到运行 1 个变量优化的函数的最小值:
[minZ, minRms] = fminbnd(@rmsMin, -5, 5);
我的问题是:我不能/(不知道如何(将数据(Z1 和 Z2(传递给函数 rmsMin,所以我必须使用我试图避免的全局变量 mainFig。有什么办法可以做到这一点吗?
使用接受单个输入的辅助函数句柄,并使用其他补充变量调用主函数:
脚本:
fun=@(z) rmsMin(z, mainFig.UserData.Z1,mainFig.UserData.Z2);
[minZ, minRms] = fminbnd(fun, -5, 5);
主要功能:
function [val] = rmsMin(z,Z1,Z2)
val = rms(Z1 - Z2 + z);
end