一、一般步骤
生成带有噪声的正态分布数据;定义拟合模型。
model = @(params, x) normpdf(x, params(1), params(2));
初始参数猜测
initial_guess = [mu, sigma];
设置约束条件
lb = [0, 0]; % 参数的最小值
ub = [10, 10]; % 参数的最大值
定义优化问题
opts = optimoptions('fmincon', 'Display', 'iter'); % 使用 fmincon 函数来进行有约束条件的最小化问题求解,以限制拟合结果的最大值和最小值
problem = createOptimProblem('fmincon', 'x0', initial_guess, 'objective', ...
@(params) sum((model(params, x) - y).^2), 'lb', lb, 'ub', ub, 'options', opts);
执行优化
ms = MultiStart('Display', 'off');
[result_params, ~, ~, ~, ~] = run(ms, problem, 10); % 用多次起始点运行以获得更好的结果
提取最优参数
mu_fit = result_params(1);
sigma_fit = result_params(2);
绘制拟合结果
二、完整程序
按需自取。
链接:https://pan.quark.cn/s/02b703d0fe75