我在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,我试图避免。有没有办法做到这一点?
答案 0 :(得分:3)
使用接受单个输入的辅助函数句柄,并使用其他补充变量调用main函数:
脚本:
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