簡體   English   中英

Matlab將數據擬合到函數,其中函數是求和和周期性語法

[英]Matlab fitting data to a function, where the function is a summation and periodic, syntax

我正在嘗試使用lsqcurvefit擬合美國過去50年的溫度數據,但是我擔心我的擬合函數語法錯誤。

擬合函數本身具有以下形式:

∑(ai+bi*t+ci*t^2)*(cos(vt+p))

從i = 1到N的總和。我希望t對應於稱為TIME的時間向量。 理想情況下,擬合應返回描述溫度數據的a,b,c,v和p值

我正在嘗試擬合稱為TMAX的每日最高溫度。

到目前為止,我有:

lsqcurvefit(fitFn(1,2,TIME),5,TIME,TMAX)

在腳本中將fitFn定義為

function f = fitFn(i,N,t)
f=0;
for i=1:N
    f =@(i,N,a,b,c,v,p,t) f + (a+b*t+c*t^2)*(cos(v*t+p));
end

但是,每當我運行lsqcurvefit時,我都會收到錯誤消息

Error using
fitFn>@(i,N,a,b,c,v,p,t)f+(a+b*t+c*t^2)*(cos(v*t+p)) (line
4)
Not enough input arguments.

Error in lsqcurvefit (line 199)
            initVals.F =
            feval(funfcn_x_xdata{3},xCurrent,XDATA,varargin{:});

Caused by:
    Failure in initial user-supplied objective function
    evaluation. LSQCURVEFIT cannot continue.

我確定我犯了一個簡單的錯誤,但我有些茫然。 我是MatLab的新手,不太了解如何使用匿名函數。 任何幫助將不勝感激。

謝謝閱讀

您的fitFn非常錯誤。 我認為這是您想要的:

f = @(x,t) (x(1)+x(2)*t+x(3)*t.^2)*cos(x(4)*t+x(5))
lsqcurvefit(f,zeros(1,5),TIME,TMAX)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM