Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 Matlab中的问题最小化功能(fmincon)

我有一个函数,可以根据波前在鱼上的入射角来计算鱼的声强。我也有一些声学强度的原位测量。我想做的是找出哪种角度的正态分布会导致模型数据与原位数据最紧密地匹配。

为此,我正在尝试使用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。

谢谢!



回答:

您应该查看不同输入的f值的数量级。它可能会影响您需要放入TolFun中的值(最小化算法对f的变化的容忍度)。例如,如果TolFun = 1e-6且f(45)和f(64)之间的差为1e-7,则该算法可能会在65处停止。另外,我认为您使用的算法假定函数是可微的(它使用导数查找“下一步去”),不确定函数中是否存在这种情况。如果不是,则应使用单纯形来找到最小值。



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 01:21


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.