十七、拟合(回歸)與内插
17.1 polyfit()
假設目前有一組身高資料,與其對應的有一組體重資料,我們要分析兩者之間是否有某種關聯,這時就需要用到曲線拟合函數polyfit,其調用格式為:fit = polyfit(xdata,ydata,n),其中n表示多項式的最高階數,xdata,ydata為将要拟合的資料,輸出的參數fit為n+1個系數,一般情況polyfit與polyval一起使用,進行繪圖
示例:
圖17-1 polyfit函數
17.2 scatter() and
corrcoef()
這裡我們要介紹兩個函數,一個是畫散點圖的函數scatter,其調用格式為:scatter(xdata,ydata)
另一個是求出x-y之間線性系數大小的函數corrcoef,其調用格式為:corrcoef(xdata,ydata),這裡要說明一點,corrcoef函數傳回的是一個2*2的矩陣,(1,1)和(2,2)分别是x-x和y-y的相關系數,必定是1,(1,2)和(2,1)分别是x-y和y-x的相關系數,必定相等
示例:
圖17-2 corrcoef and scatter
17.3 regress()
Regress函數的作用也是做資料拟合,隻不過它所呈現的資訊更多,其調用格式為:[b,bint,r,rint,stats] =
regress(y,x,alpha)
參數說明:
y 多元拟合的變量值的向量
x 多元拟合的自變量的值的矩陣
alpha 顯著性水準,預設的時候為0.05
b 回歸得到的自變量系數
bint b的95%的置信區間矩陣
r 殘差向量
rint 區間矩陣
17.4 插值
拟合與插值是數學模組化中常用的兩種資料分析的方法,前三節我們講的内容全部都是關于拟合的,下面我們要講的是插值。拟合與插值不同的地方在于,拟合出的函數曲線不一定會經過所有的點,隻能說大概呈現一個趨勢,而插值一定會經過所有的資料點
那麼插值的作用是什麼呢,我們知道拟合的作用是呈現趨勢,插值的作用:比如我們已知t=1時,a=2,t=2時,a=3,那麼t=1.5時,a=多少呢?是以插值就是幫助我們求某處的資料值
其調用格式為:yi=interp1(x,y,xi),其中,x,y是我們已知的資料值,我們現在要求,經過一系列(x,y)點的曲線在xi時對應的yi值
文法形式 | 說明 |
---|---|
y=interp1(x,Y,xi) | 由已知點集(x,Y)插值計算xi上的函數值 |
y=interp1(x,Y,xi) | 相當于x=1:length(Y)的interp(x,Y,xi) |
y=interp1(x,Y,xi,method) | 用指定插值方法計算插值點xi上的函數值 |
y=interp1(x,Y,xi,method,’extrap’) | 對xi中超出已知點集的插值點用指定插值方法計算函數值 |
y=interp1(x,Y,xi,method,’extrap’,extrapval) | 用指定方法插值xi上的函數值,超出已知點集處函數值取extrapval |
y=interp1(x,Y,xi,method,’pp’) | 用指定方法插值,但傳回結果為分段多項式 |
Method | 方法描述 |
---|---|
Nearest | 最鄰近插值:插值點處函數值與插值點最鄰近的已知點函數值相等 |
liner | 分段線性插值:插值點處函數值由連接配接其最鄰近的兩側點的線性函數預測。Matlab中interp1的預設方法 |
spline | 樣條插值:預設為三次樣條插值。可用spline函數替代 |
pchip | 三次Hermite多項式插值,可用pchip函數替代 |
(1)Nearest方法速度最快,占用記憶體最小,但一般來說誤差最大,插值結果最不光滑
(2)Spline三次樣條插值是所有插值方法中運作耗時最長的,插值函數及其一二階導函數都連續,是最光滑的插值方法。占用記憶體比cubic方法小,但是已知資料分布不均勻的時候可能出現異常結果
(3)Cubic三次多項式插值法中,插值函數及其一階導數都是連續的,是以插值結果比較光滑,速度比Spline快,但是占用記憶體最多
示例:
圖17-3 插值
當然,插值不止可以用于平面中,還可以用于三維圖中,函數是interp2,參數及方法類似,zi = interp2(x,y,z,xi,yi,method),讀者下去練習即可
十八、作者結語
matlab系列文章已全部更完,如有任何錯誤或者建議歡迎指出,同時歡迎各位讀者加入部落格交流群689696631。最後,如果你是看了我的系列文章準備參加美賽,祝你取得好成績