在Matlab中具有给定函数的时间序列的近似值

时间:2018-11-27 13:50:26

标签: matlab time-series approximation function-fitting

我正在尝试在matlab中适应遵循这种功能的温度时间序列enter image description here

我将需要检索该函数的8个参数,将其作为边界lambda = 0和sigma正数。 我尝试在matlab中使用lsqcurvefit函数,但是如果我有一个for循环,则无法在内置的matlab函数中使用y函数。

Torontoless=xlsread('temp.xlsx',2);
xdata=zeros(1,6576);
x=[0,0,0,0,0,0];
ydata=Torontoless';
Toronto=[zeros(size(ydata,1),1) ydata];
fun=zeros(1,6576);
for i=1:6576
fun(i)=(1-x(1))*(Toronto(i)-(x(2)+x(3)*Toronto(i)+x(4)*(sin(x(5)*Toronto(i)+x(6)))))+x(2)+x(3)*Toronto(i+1)+x(4)*(sin(x(5)*Toronto(i+1)+x(6)))+(randn-x(7))*x(8);
end

x0=[0,0,0,0,0,0];
lb=[-1000,-1000,-1000,-1000,-1000,-1000,0,0];
ub=[1000,1000,1000,1000,1000,1000,0,1000];

现在,我不知道如何在函数x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

中使用乐趣

我不知道是否有更好的方法来适应这种时间序列,但是请告诉我您是否有解决问题的想法。 非常感谢。

PS临时矢量的大小为1x6576。因为我希望温度从0开始,所以我首先添加了一个额外的列。

0 个答案:

没有答案