matlab拟合模型学习总结
與插值問題不同,在擬合問題中不需要曲線一定經(jīng)過給定的點(diǎn)。擬合問題的目標(biāo)是尋求一個(gè)函數(shù)(曲線),使得該曲線在某種準(zhǔn)則下與所有的數(shù)據(jù)點(diǎn)最為接近,即曲線擬合的最好(最小化損失函數(shù))。
我們首先使用最小二乘法來計(jì)算并擬合
上圖為最最小二乘法基本公式,在此不進(jìn)行深入解釋。
利用已知數(shù)據(jù),計(jì)算k,bhat,來對(duì)所給數(shù)據(jù)進(jìn)行擬合。
下面我們?cè)趍atlab中實(shí)際操作一下
plot(x,y,'o')%做出散點(diǎn)圖,先最已知數(shù)據(jù)進(jìn)行觀察
xlabel('x的值')
ylabel('y的值')%給x,y軸加標(biāo)簽。
n=size(x,1);%測(cè)量x長(zhǎng)度
k=(n*sum(x.*y)-sum(x)*sum(y))/(n*sum(x.*x)-sum(x)*sum(x))
b=(sum(x.*x)*sum(y)-sum(x)*sum(x.*y))/(n*sum(x.*x)-sum(x)*sum(x))%分別算出k和b的值,根據(jù)最小二乘法
hold on %在之前的散點(diǎn)圖上繼續(xù)畫圖形
grid on %在生成的圖形上顯示網(wǎng)格線,更容易看出大小比較和區(qū)分
f=@(x) k*x+b;
%匿名函數(shù)的基本用法
%函數(shù)名稱=@(arglist函數(shù)變量)anonymous function
%anonymous function匿名函數(shù)的表達(dá)式
fplot(f,[2.5,7]);
legend('樣本數(shù)據(jù)','擬合函數(shù)')
%計(jì)算擬合優(yōu)度
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2)%回歸平方和
SSE=sum((y_hat-y).^2)%誤差平方和
SST=sum((y-mean(y)).^2)%誤差總體平方和
SST-SSE-SSR%5.6843e-14誤差很小
R_2=SSR/SST
?
擬合完畢之后,我們對(duì)其進(jìn)行擬合優(yōu)度測(cè)定,以確定擬合的好壞
擬合優(yōu)度只有對(duì)線性函數(shù)才有實(shí)際作用,線性可以對(duì)參數(shù)的線性
?結(jié)合上部分代碼,可以計(jì)算出擬合優(yōu)度。
%計(jì)算擬合優(yōu)度
y_hat=k*x+b;
SSR=sum((y_hat-mean(y)).^2)%回歸平方和
SSE=sum((y_hat-y).^2)%誤差平方和
SST=sum((y-mean(y)).^2)%誤差總體平方和
SST-SSE-SSR%5.6843e-14誤差很小
R_2=SSR/SST
在matlab中還有擬合工具箱的用法,在我們擬合時(shí)更為便捷。
其中一般選用多項(xiàng)式,和自定義擬合方法
?
點(diǎn)擊文件還可以創(chuàng)造獲取代碼,可以放在論文附錄中,進(jìn)行翻譯。
在命令行窗口中可以直接運(yùn)行該生成函數(shù)?
?在使用自定義函數(shù)擬合時(shí)候,可能會(huì)遇到?jīng)]有收斂解的情況此時(shí)
?
總結(jié)
以上是生活随笔為你收集整理的matlab拟合模型学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 八大排序算法的python实现(三)冒泡
- 下一篇: 洛谷树剖模板题 P3384 | 树链剖分