matlab 线性拟合polyfit_从零开始的matlab学习笔记——(24)曲线拟合
matlab應用——求極限,求導,求積分,解方程,函數繪圖,三維圖像,擬合函數....更多內容盡在個人專欄:matlab學習
才發現這個數據插值的返回值不是個函數表達式,是一系列點集,不能使用polyval函數預測值。
上一節我們說了數據插值,這一節我們再說一個差不多的東西,叫曲線擬合
曲線擬合:
先看一下百度百科的定義:
曲線擬合(curve fitting)是指選擇適當的曲線類型來擬合觀測數據,并用擬合的曲線方程分析兩變量間的關系。
主要方法就是我們高中學過的最小二乘法。
我們先生成一系列離散數據點:
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函數:
polyfit函數用于進行曲線擬合,調用格式和插值函數interp1相似
polyfit(x,y,n),
x,y構成離散數據點(x,y),n則是設定用n次多項式進行擬合,比如n=3就是用最高三次多項式進行擬合。
現在對上面的離散數據點進行擬合:
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記錄擬合后的函數
x1=1790:0.2:2010 %重新定義自變量x1
y1=polyval(f,x1) %重新定義因變量y1
plot(x,y,'r*',x1,y1,'b')
為了區分,這里plot函數把原來的數據點也畫進去:
這里我們還可以預測后面的數據
比如要求2020年的數據:
ans=polyval(f,2020)
結果就是:
這里簡單說一說數據插值和曲線擬合的異同:
同:兩者都是函數逼近的方法,都可以對未知數據點進行合理的預測,但都會有一定的誤差。
異:插值需要的數據點相比曲線擬合較少
插值要求函數必須經過所有已知數據點,擬合不需要
最后再補充一點,可能會有知友發現插值和擬合的多項式函數都采用三次多項式。
首先,次數低于3,多項式擬合程度較差,不容易進行準確的擬合和插值
其次,多項式函數并非越高越好,這里有個Runge現象,即多項式函數次數越高,越容易產生振蕩而偏離原函數,使得誤差增大
到這里我們簡單梳理了插值和擬合兩種函數處理方式,下一節的內容暫定,我們可能要再回到符號計算。
歡迎喜歡的朋友點贊關注收藏啊:)
總結
以上是生活随笔為你收集整理的matlab 线性拟合polyfit_从零开始的matlab学习笔记——(24)曲线拟合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zookeeper可视化监控工具_Red
- 下一篇: matlab做横截面回归,matlab