丑的认真 发表于 2016-4-29 23:12

MATLAB的程序求助

clc;   % 清屏幕 
clear; % 清除以前的变量  
% 数据点(t,y) t=1800:10:2000; 
y=; plot(t,y,'b*');  
% 定义需要拟合的函数类型myfun(a,t),a是参数列表,t是变量  myfun = @(a,t);  a0=; % 初始值  
 % 非线性拟合.最重要的函数,第1个参数是以上定义的函数名,第2个参数是初值,第3、4个参数是已知数据点 a=lsqcurvefit(myfun,a0,t,y); 
disp(['a=' num2str(a)]); % 显示得到的参数  
% 画出拟合得到的函数的图形 ti=1800:10:2010; yi=myfun(a,ti); hold on; 
plot(ti,yi,'r');  
% 给图形加上图例 xlabel('年份'); ylabel('人口数');
legend('原始数据','拟合函数',2); box on;  grid on;  
tn=2010; % 预测在未知点的函数值 yn=myfun(a,tn); 
disp(['yn=' num2str(yn)]); % 显示得到的参数


请问上面程序里的a0表示的初始值是从哪来的?谢谢大家帮忙!

2498706462 发表于 2017-8-17 20:02

初始值可以任意,不过选取尽量贴近你自己x的估计值,偏离较大只会让机器跑的时间更长
页: [1]
查看完整版本: MATLAB的程序求助