Аппроксимация временного ряда с заданной функцией в matlab - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь вписать в matlab временной ряд температуры, который следует за этим типом функции enter image description here

Мне нужно будет извлечь 8 параметров функции, указав в качестве границылямбда = 0 и сигма положительная.Я попытался использовать функцию lsqcurvefit в matlab, но я не могу использовать функцию y внутри этой встроенной функции matlab, если у меня есть цикл for.

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, я сначала добавил дополнительный столбец.

...