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



我在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

相关内容

  • 没有找到相关文章

最新更新