天天看點

《MATLAB神經網絡超級學習手冊》——2.3 曲線拟合

本節書摘來自異步社群《matlab神經網絡超級學習手冊》一書中的第2章,第2.3節,作者:matlab技術聯盟 , 劉冰 , 郭海霞著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

matlab神經網絡超級學習手冊

在科學和工程領域,曲線拟合的主要功能是尋求平滑的曲線來最好地表現帶有噪聲的測量資料,從這些測量資料中尋求兩個函數變量之間的關系或者變化趨勢,最後得到曲線拟合的函數表達式y=f(x)。

一般來說,使用多項式進行資料拟合會出現資料振蕩,而spline插值的方法可以得到很好的平滑效果,但是關于該插值方法有太多的參數,不适合曲線拟合的方法。

同時,由于在進行曲線拟合的時候,已經認為所有測量資料中已經包含噪聲,是以,最後的拟合曲線并不要求通過每一個已知資料點,衡量拟合資料的标準則是整體資料拟合的誤差最小。

一般情況下,matlab的曲線拟合方法用的是“最小方差”函數,其中方差的數值是拟合曲線和已知資料之間的垂直距離。

2.3.1 多項式拟合

在matlab中,函數polyfit()采用最小二乘法對給定的資料進行多項式拟合,得到該多項式的系數。該函數的調用方式如下。

找到次數為n的多項式系數,對于資料集合{(xi, yi)},滿足差的平方和最小。

傳回同上的多項式p和矩陣e。多項式系數在向量p中,矩陣e用在polyval函數中來計算誤差。

【例2-25】某資料的橫坐标為x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8],縱坐标為y=[1 2 3 5 6 7 6 5 4 1],對該資料進行多項式拟合。

解:代碼如下。

運作程式後,得到的5階多項式如下。

運作程式後,得到的輸出結果如圖2-6所示。由圖可以看出,使用5次多項式拟合時,得到的結果比較差。

當采用9次多項式拟合時,得到的結果與原始資料符合的比較好。當使用函數polyfit()進行拟合時,多項式的階次最大不超過length(x)1。

《MATLAB神經網絡超級學習手冊》——2.3 曲線拟合

**2.3.2 權重最小方差(wls)拟合原理及執行個體

**所謂權重最小方差,就是根據基礎資料本身各自的準确度的不同,在拟合的時候給每個資料以不同的權重數值。這種方法比前面所介紹的單純最小方差方法要更加符合拟合的初衷。

對應n階多項式的拟合公式,所需要求解的拟合系數需要求解線性方程組,其中線性方程組的系數矩陣和需要求解的拟合系數矩陣如下。

《MATLAB神經網絡超級學習手冊》——2.3 曲線拟合

其對應的權重最小方差為表達式。

【例2-26】根據wls資料拟合方法,自行編寫使用wls方法拟合資料的m函數,然後使用wls方法進行資料拟合。

解:在m檔案編輯器中輸入下面的程式代碼。

将上面代碼儲存為“polyfits.m”檔案。

使用上面的程式代碼,對基礎資料進行ls多項式拟合。在matlab的指令視窗中輸入下面的程式代碼。

得到的拟合結果如圖2-7所示。

《MATLAB神經網絡超級學習手冊》——2.3 曲線拟合

從上面的例子可以看出,ls方法其實是wls方法的一種特例,相當于将每個基礎資料的準确度都設為1,但是,自行編寫的m檔案和預設的指令結果不同,請仔細比較。

繼續閱讀