0

この種の関数に従う温度時系列をmatlabに適合させようとしていますここに画像の説明を入力

関数の 8 つのパラメーターを取得する必要があります。境界 lambda=0 および sigma positive として設定します。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];

さて、関数内で fun を使用する方法がわかりませんx=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

この種の時系列に適合するより良い方法があるかどうかはわかりませんが、問題を解決するために何か考えていることがあれば教えてください。どうもありがとう。

PS temp ベクトルのサイズは 1x6576 です。温度を 0 から開始したかったので、最初に余分な列を追加しました。

4

0 に答える 0