matlab非線性擬合函數(shù)lsqcurvefit、nlinfit

2017-05-22  by:CAE仿真在線  來源:互聯(lián)網(wǎng)

問題:有些時(shí)候我們需要擬合一些非線性的表達(dá)式。

比如:我們知道一個(gè)表達(dá)式的式子是y=A*sin(x).*exp(x)-B./log(x),現(xiàn)在我們手里面有x與y對(duì)應(yīng)的一大把數(shù)據(jù)。我們?nèi)绾胃鶕?jù)x,y的值找出最佳的A、B值。則我們現(xiàn)在借助Matlab的函數(shù)lsqcurvefit、nlinfit,當(dāng)然也可以使用lsqnonlin。


格式:lsqcurvefit(f,a,x,y)、nlinfit(x,y,f,a)

f:符號(hào)函數(shù)句柄,如果是以m文件的形式調(diào)用的時(shí)候,別忘記加@.這里需要注意,f函數(shù)的返回值是和y匹對(duì)的,即擬合參數(shù)的標(biāo)準(zhǔn)是(f-y)^2取最小值,具體看下面的例子

a:最開始預(yù)估的值(預(yù)擬合的未知參數(shù)的估計(jì)值)。如上面的問題如果我們預(yù)估A為1,B為2,則a=[1 2]

x:我們已經(jīng)獲知的x的值

y:我們已經(jīng)獲知的x對(duì)應(yīng)的y的值


例子:

問題:對(duì)于函數(shù)y=a*sin(x)*exp(x)-b/log(x)我們現(xiàn)在已經(jīng)有多組(x,y)的數(shù)據(jù),我們要求最佳的a,b值

%針對(duì)上面的問題,我們可以來演示下如何使用這個(gè)函數(shù)以及看下其效果

>> x=2:10;

>> y=8*sin(x).*exp(x)-12./log(x);

%上面假如是我們事先獲得的值

>> a=[1 2];

>> f=@(a,x)a(1)*sin(x).*exp(x)-a(2)./log(x);

%第一種方法使用lsqcurvefit

>>lsqcurvefit(f,a,x,y)

ans =

7.999999999999987 11.999999999988997%和我們預(yù)期的值8和12結(jié)合得非常好

>>

%第二種方法使用nlinfit

>>nlinfit(x,y,f,a)

ans =

8.000000000000000 11.999999999999998

>>

%**********************************

%另一種方法,假如我們寫了一個(gè)如下的m文件

functionf=test(a,x)

f=a(1)*sin(x).*exp(x)-a(2)./log(x);

end

%則在上面lsqcurvefit函數(shù)調(diào)用如下,不要忘記那個(gè)@

lsqcurvefit(@test,a,x,y)

轉(zhuǎn)自http://blog.sina.com.cn/u/bca90a130102x4lo





開放分享:優(yōu)質(zhì)有限元技術(shù)文章,助你自學(xué)成才

相關(guān)標(biāo)簽搜索:matlab非線性擬合函數(shù)lsqcurvefit、nlinfit MatLab培訓(xùn) MatLab培訓(xùn)課程 MatLab在線視頻教程 MatLab技術(shù)學(xué)習(xí)教程 MatLab軟件教程 MatLab資料下載 MatLab代做 MatLab基礎(chǔ)知識(shí) Fluent、CFX流體分析 HFSS電磁分析 Ansys培訓(xùn) Abaqus培訓(xùn) 

編輯
在線報(bào)名:
  • 客服在線請(qǐng)直接聯(lián)系我們的客服,您也可以通過下面的方式進(jìn)行在線報(bào)名,我們會(huì)及時(shí)給您回復(fù)電話,謝謝!
驗(yàn)證碼

全國服務(wù)熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號(hào)金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓(xùn)QQ咨詢:點(diǎn)擊咨詢 點(diǎn)擊咨詢
項(xiàng)目QQ咨詢:點(diǎn)擊咨詢
email:kf@1cae.com