我有一个函数可以根据鱼上波前的入射角计算鱼的声学强度。我也有一些声学强度的现场测量。我想要做的是找出哪个角度的正态分布导致模型数据与原位数据最匹配。
为此,我尝试使用 Matlab 函数 fmincon 来最小化以下函数:
function f = myfun(x)
TS_krm = KRM(normrnd(x(1),x(2),100,1), L);
f = sum((TS_insitu - TS_krm).^2);
所以这个函数的作用是计算我想要最小化的残差平方和。为此,我尝试使用 fmincon:
x = fmincon(@myfun, [65;8], [], [], [], [], [0;0], [90;20], [], options);
因此,我使用平均 65 度和标准偏差 8 的起始方向。我还将平均角度范围设置为 0 到 90 度,标准偏差范围设置为 0 到 20 度.
然而,它似乎并没有正确地找到最小化函数的平均和标准偏差角。通常它会在 N(65,8) 附近输出一些东西,几乎就像它并没有真正尝试远离起点的许多其他值。
关于我可以做些什么来完成这项工作的任何想法?我知道我可以设置 TolX 和 TolFun 设置,但我不确定它们的作用以及它们会产生什么影响。如果有帮助,我处理的典型值通常在 -45 dB 左右。
谢谢!