永发信息网

将人口死亡率分为趋势项与周期项 ,用matlab如何对数据进行处理,趋势项可看为负指数分布,周期项三角函

答案:1  悬赏:70  手机版
解决时间 2021-02-01 00:02
  • 提问者网友:记得曾经
  • 2021-01-30 23:50
将人口死亡率分为趋势项与周期项 ,用matlab如何对数据进行处理,趋势项可看为负指数分布,周期项三角函
最佳答案
  • 五星知识达人网友:玩世
  • 2021-01-31 00:05
要用非线性最小二乘拟合lsqcurvefit:

首先编写假设的函数:
function F=myfun(x,xdata)
F=x(1)*cos(x(2)*xdata)+x(3)*exp(-x(4)*xdata);

其中 x(1),x(2)...为要拟合出来参数
再进行拟合,用年份做变量不太方便,我改了一下,你可以改回来

t=0.5:0.5:30.5;
t=t';
y=[0.02 0.018 0.0178 0.017 0.014 0.01318 0.01228 0.0114 0.0108 0.01198 0.01459 0.01791 0.01424 0.01002 0.01211 0.0115 0.0095 0.00883 0.00843 0.00821 0.00803 0.0076 0.00732 0.00761 0.00704 0.00734 0.00732 0.00725 0.00687 0.00625 0.00621 0.00634 0.00636 0.0066 0.0069 0.00682 0.00678 0.00686 0.00672 0.00664 0.00654 0.00667 0.0067 0.00664 0.00664 0.00649 0.00657 0.00656 0.00651 0.0065 0.00646 0.00645 0.00643 0.00641 0.0064 0.00642 0.00651 0.00681 0.00693 0.00706 0.00708]';

x=lsqcurvefit(@myfun,[2 1 0.01 0.04],t,y) %第二项那个向量是迭代的初始值,你可以自己反复试,直到图像符合,而且算出来的x比较稳定时,即为你要的解。
y1=x(1)*cos(x(2)*t)+x(3)*exp(-x(4)*t);
plot(t,y,'or',t,y1,'b-')追问怎么运行不了啊,求详细过程
??? Undefined function or variable "t".

Error in ==> lsqcurvefit at 149
[t,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
神马意思,先谢谢了追答你把我写的从t=0.5:0.5:30.5;。。。。开始全部复制粘贴过去呀
你没有定义t,所以才会??? Undefined function or variable "t".
这个t就相当于你的年份呀追问可是我确实定义了t,还把xdata改为t试了一下,就是出错。。。追答你有没有把
function F=myfun(x,xdata)
F=x(1)*cos(x(2)*xdata)+x(3)*exp(-x(4)*xdata);
单独写成一个m文件?
你给我留言吧,再追问要扣分了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯