matlab 线性拟合polyfit_从零开始的matlab学习笔记——(24)曲线拟合
matlab應(yīng)用——求極限,求導(dǎo),求積分,解方程,函數(shù)繪圖,三維圖像,擬合函數(shù)....更多內(nèi)容盡在個(gè)人專欄:matlab學(xué)習(xí)
才發(fā)現(xiàn)這個(gè)數(shù)據(jù)插值的返回值不是個(gè)函數(shù)表達(dá)式,是一系列點(diǎn)集,不能使用polyval函數(shù)預(yù)測值。
上一節(jié)我們說了數(shù)據(jù)插值,這一節(jié)我們再說一個(gè)差不多的東西,叫曲線擬合
曲線擬合:
先看一下百度百科的定義:
曲線擬合(curve fitting)是指選擇適當(dāng)?shù)那€類型來擬合觀測數(shù)據(jù),并用擬合的曲線方程分析兩變量間的關(guān)系。
主要方法就是我們高中學(xué)過的最小二乘法。
我們先生成一系列離散數(shù)據(jù)點(diǎn):
x=1790:10:2010
y=[3 5 7 9 12 13 15 16 18 21 23 37 24 29 30 28 33 34 36 38 39 44 42]
plot(x,y,'r.')
polyfit函數(shù):
polyfit函數(shù)用于進(jìn)行曲線擬合,調(diào)用格式和插值函數(shù)interp1相似
polyfit(x,y,n),
x,y構(gòu)成離散數(shù)據(jù)點(diǎn)(x,y),n則是設(shè)定用n次多項(xiàng)式進(jìn)行擬合,比如n=3就是用最高三次多項(xiàng)式進(jìn)行擬合。
現(xiàn)在對(duì)上面的離散數(shù)據(jù)點(diǎn)進(jìn)行擬合:
x=1790:10:2010
y=[3 5 7 9 12 13 15 16 18 21 23 37 24 29 30 28 33 34 36 38 39 44 42]
f=polyfit(x,y,3) %用f記錄擬合后的函數(shù)
x1=1790:0.2:2010 %重新定義自變量x1
y1=polyval(f,x1) %重新定義因變量y1
plot(x,y,'r*',x1,y1,'b')
為了區(qū)分,這里plot函數(shù)把原來的數(shù)據(jù)點(diǎn)也畫進(jìn)去:
這里我們還可以預(yù)測后面的數(shù)據(jù)
比如要求2020年的數(shù)據(jù):
ans=polyval(f,2020)
結(jié)果就是:
這里簡單說一說數(shù)據(jù)插值和曲線擬合的異同:
同:兩者都是函數(shù)逼近的方法,都可以對(duì)未知數(shù)據(jù)點(diǎn)進(jìn)行合理的預(yù)測,但都會(huì)有一定的誤差。
異:插值需要的數(shù)據(jù)點(diǎn)相比曲線擬合較少
插值要求函數(shù)必須經(jīng)過所有已知數(shù)據(jù)點(diǎn),擬合不需要
最后再補(bǔ)充一點(diǎn),可能會(huì)有知友發(fā)現(xiàn)插值和擬合的多項(xiàng)式函數(shù)都采用三次多項(xiàng)式。
首先,次數(shù)低于3,多項(xiàng)式擬合程度較差,不容易進(jìn)行準(zhǔn)確的擬合和插值
其次,多項(xiàng)式函數(shù)并非越高越好,這里有個(gè)Runge現(xiàn)象,即多項(xiàng)式函數(shù)次數(shù)越高,越容易產(chǎn)生振蕩而偏離原函數(shù),使得誤差增大
到這里我們簡單梳理了插值和擬合兩種函數(shù)處理方式,下一節(jié)的內(nèi)容暫定,我們可能要再回到符號(hào)計(jì)算。
歡迎喜歡的朋友點(diǎn)贊關(guān)注收藏啊:)
總結(jié)
以上是生活随笔為你收集整理的matlab 线性拟合polyfit_从零开始的matlab学习笔记——(24)曲线拟合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zookeeper可视化监控工具_Red
- 下一篇: matlab人脸追踪,求大神帮助我这个菜