MATLAB 自定义函数拟合

MATLAB 自定义函数拟合

首先建立阻滞增长模型

syms x(t) r xm t0 x0
eqns=diff(x,t)==r*(1-x/xm)*x;
cons=x(t0)==x0;
y(t)=simplify(dsolve(eqns,cons));

然后导入数据

year = 1790:10:2000;
population = [3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4];

然后根据数据确定时间(单位:年)和人口初值(单位:百万)

t0=1790;
x0=3.9;
y(t)=subs(y);

建议以上代码在普通脚本或命令行输出,方便之后直接粘贴在工具箱中
(在实时脚本输出的公式粘贴需要大改,不太方便)
然后进入函数拟合工具箱

MATLAB 自定义函数拟合_第1张图片

Fig 1.工具箱设置

然后点击左上角的 文件->Generate Code 生成可复用的函数
将函数文件保存在工作路径下后可使用下列代码使用函数去拟合其他数据,并利用拟合后的方程绘图
此处为了方便对比,使用原有数据进行拟合并往后预测30年

[fitresult, gof] = createFit_self(year, population)
t_pre=1790:10:2030;
plot(t_pre,fitresult(t_pre),year,population,'+')

MATLAB 自定义函数拟合_第2张图片

Fig2 .函数预测图像

你可能感兴趣的:(MATLAB,matlab)