matlab怎么改进?

x=[101654 103008 104357 105851 107507 109300 111026 112704 114333 115823 117171 118517 119850 121121 122389 123626 124810];
x=nonzeros(x);
t=[1982:1:1998]';
t0=t(1);x0=x(1);
fun=@(cs,td)cs(1)./(1+(cs(1)/x0-1)*exp(-cs(2)*(td-t0)));%cs(1)=xm,cs(2)=r
cs=lsqcurvefit(fun,rand(2,1),t(2:end),x(2:end),zeros(2,1));
xhat=fun(cs,[t;1999])
t1=[t;1999];
plot(t1,xhat,'*-',t,x,'+-')
title('logistic寻找中国人口增长规律')
xlabel('年份')
ylabel('人口(万)')

如何改进matlab编写的模型?查看题主给出的代码,主体没有太大的问题,主要的问题是初值选取不合理,再就是受lb=zeros(2,1)的限制。处理建议:

1、初值选取一般未知的情况下,可以用随机数来替代,然后逐步调整

2、系数的上下限,在未知的情况下,可以优先考虑为空值,即 lb=[]

3、然后通过调试得到结果

追问

有什么办法能让报错的这个消除吗

追答

那个不是报错的信息,是停止运行标准详细信息。这里的信息是

lsqsurvefit停止的原因是,因为相对于其初始值小于函数公差的默认值。

如果,想不显示可以这样写

cs=lsqcurvefit(.....)

clc

cs 

追问

好的!谢谢!

温馨提示:答案为网友推荐,仅供参考