在 Matlab 中将数据传递给函数 fminbnd 时避免使用全局变量的方法

Ways to avoid using global variable while passing data to function fminbnd in Matlab

我在 Matlab 中有一个非常简单的函数:

function [val] = rmsMin(z)
    Z1 = mainFig.UserData.Z1;
    Z2 = mainFig.UserData.Z2;
    val = rms(Z1 - Z2 + z);
end

我试图找到这个函数的最小值 运行 1 变量优化函数 fminbnd:

[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