close all;
clear all;
clc;
%% Pharmacokinetic Data
t = -10:0.2:10; %#ok
c = 5*exp(-((t)/4).^2)+randn(size(t))*0.1;
plot(t,c,'o'), xlabel('t'), ylabel('c');hold on
%% 3 Compartment Model
model = @(b,t) (b(1)+b(2)*exp(-((t-b(3))./b(4)).^2))
%% Define Optimization Problem
problem = createOptimProblem('lsqcurvefit', 'objective', model, 'xdata', t, 'ydata', c, 'x0',ones(1,4))
% 'lb', [-10 -10 -10 0],'ub', [ 10 10 10 0.5],'options',optimset('OutputFcn', @curvefittingPlotIterates)
%% solve
% b = lsqcurvefit(problem)%Direct fitting may lead to local optimum
%% Multistart
ms = MultiStart('PlotFcns',@gsplotbestf)
[b,fval,exitflag,output,solutions] = run(ms, problem, 100) %#ok
%%
figure;
plot(t,c,'o'), xlabel('t'), ylabel('c');hold on
hold on;
xfdata=-10:0.2:10;
yfdata= b(1)+b(2)*exp(-((xfdata-b(3))./b(4)).^2);
plot(xfdata,yfdata,'r')
hold off;
(1)迭代过程