基於MATLAB的多項式數據擬合方法研究-畢業論文

摘要:本論文先介紹了多項式數據擬合的相關背景,以及對整個課題作了一個完整的認識。接下來對擬合模型,多項式數學原理進行了詳細的講解,經過對文獻的閱讀以及本身的知識積累對原理有了一個系統的認識。介紹多項式曲線擬合的基本理論,對多項式數據擬合原理進行了全方面的理論闡述,同時也闡述了曲線擬合的基本原理及多項式曲線擬合模型的創建。具體記錄了多項式曲線擬合的具體步驟,在創建理論的基礎上具體實現多項式曲線的MATLAB實現方法的研究,採用MATLAB R2016a的平臺對測量的數據進行多項式數據擬合,介紹了MATLAB的具體構造和曲線擬合工具。最後就是利用MATLAB中的plotfit函數對測量到的數據進行多項式擬合,並給出多項式曲線擬合圖形,並對測試的結果進行總結,得出多項式曲線擬合的最佳擬合方法。git

 

關鍵詞:多項式,曲線擬合,MATLAB,測量數據編程

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Research on polynomial data fitting method based on MATLAB數組

 

Abstract網絡

This paper first introduces the background of polynomial data fitting and gives a complete understanding of the whole subject. Then, the fitting model and the mathematical principle of polynomial are explained in detail, and a systematic understanding of the principle is gained through the reading of literature and the accumulation of knowledge. Introduce the basic theory of polynomial curve fitting of polynomial data fitting principle for all aspects of the theory, but also elaborated the basic principle of curve fitting and polynomial curve fitting model. Specific records the specific steps polynomial curve fitting, on the basis of the established theory of polynomial curve method of MATLAB to realize the study, using MATLAB R2016a platform on the measured data of polynomial fitting data, the special structure of MATLAB is introduced and the curve fitting tool. Finally is plotfit function in MATLAB to polynomial fitting of measured data, graphics and polynomial curve fitting is given, and summarizes the results of the test, the optimum fitting of polynomial curve fitting method.數據結構

 

 

Keywordspolynomial,Curve fitting,MATLAB,The measurement data編程語言

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目 錄編輯器

第一章緒論......................................................... 1ide

1.1  多項式數據擬合研究背景及目的............................... 1函數

1.2  國內多項式數據擬合發展方向................................. 1工具

1.3  本課題研究的內容........................................... 2

第二章數據曲線擬合................................................. 3

2.1  擬合模型................................................... 3

2.2  多項式曲線擬合原理......................................... 3

2.3  polyfit、polyval、plot函數................................ 4

第三章  MATLAB.................................................... 10

3.1  MATLAB概述............................................... 10

3.2  MATLAB的優勢............................................. 10

3.3  MATLAB運行簡介........................................... 11

3.4  MATLAB曲線擬合工具箱簡介................................. 12

3.5 多項式數據擬合的MATLAB實現................................ 16

第四章多項式數據擬合的應用........................................ 19

4.1  獲取數據.................................................. 19

4.2  使用數據擬合工具箱獲取數據模型............................ 19

4.3  進行多項式曲線擬合........................................ 20

結束語............................................................ 23

致謝.............................................................. 24

參考文獻.......................................................... 25

 

 

 

 

 

 

 

 

 

 


 

第一章  緒論

1.1  多項式數據擬合研究背景及目的

在實際的工程測量以及作科學研究時,經常會得出一對數據。而當咱們研究這些數據時,很難直接獲得他們複合的函數,這時咱們就要設法去尋找最佳的曲線去儘可能的逼近所給的數據點。這些經過數學固然能夠解決,可是計算過程太過麻煩。基於此人們提出了基於MATLAB的多項式數據擬合的理論,MATLAB內置很是豐富的函數庫以及很是方便使用的曲線擬合工具箱,只須要使用者提供已經有的數據,而後使用MATLAB中的數據擬合工具箱就能簡單的完成數據擬合的目的。數據擬合出的多項式函數所畫出的曲線逼近所給的數據點在座標上的位置。這樣得出的多項式可以反映出工程和科學研究領域上的規律變化,從而得出大體的物理規律和工程等現象的內在規律。多項式數據擬合的基本原理是:針對所測的數據,在MATLAB中表示出來以後,而在MATLAB中內置了polyfit函數,它能夠根據你想擬合的階次來儘可能的逼近所給的數據點,而不一樣的階次也有不一樣的效果,通常的話階次越高,擬合曲線的振盪也就越大,這就給數據擬合提供了很大的方便。也由於上述所說的緣由,在必定程度上,多項式曲線擬合有必定的通用性。在上述的基礎上,經過MATLAB的polt函數,可以對曲線進行仿真,而後咱們能夠經過分析它所給出的圖形界面,直觀地看出哪個階次的多項式更逼近所給的數據點,而後進行分析驗證。

1.2  國內多項式數據擬合發展方向

在經過近期的學習中以及看了大量的相關書籍後進行分析,基於MATLAB的多項式數據擬合被用在不少實際的工程測量數據、物理實驗以及科學研究等一些領域的測試數據分析。研究者們很是但願經過研究這些數據來得出這些數據知足的通常趨勢,從而獲得很是靠譜的內在規律,從而達到預測和分析的目的。基於MATLAB的數據擬合有不少種方法好比:最小二乘法、多項式法、圓擬合等,咱們這裏使用的基於MATLAB的多項式數據擬合,由於它能夠改變多項式的次數,從而來達到更加逼近測試數據的目的,因此這種方法具備通用性的效果。可是如今因爲實際問題的複雜性,數據擬合還有很好的發展空間。在一些常見的狀況下,依據許多孤立的數據很是困難直接肯定它符合哪一種既定函數,然而多項式數據擬合因爲可以挑選合適擬合的次數從而達到數據擬合的精度要求,於是具備通用性。由於是經過觀察擬合曲線和測試數據點的關係來肯定多項式函數,因此多項式擬合問題能夠歸結爲函數逼近問題。本質上它是由具體的測試數據找到通常規律,能夠說這種方法已經趨於成熟。能夠預見它在數據擬合領域一定會有大的發展。隨着計算機的普遍應用,利用MATLAB進行多項式數據擬合已經成爲了避免可缺的步驟。

1.3  本課題研究的內容

因爲多項式數據擬合是如今全部擬合方法中通用的方法,因此本次設計也研究了不少,將從如下幾個方面研究多項式數據擬合:

(1)首先闡述了多項式數據擬合的研究背景以及它的目的。而後討論了多項式曲線擬合在國內的應用和它之後的發展方向。

(2)討論了數據曲線擬合的原理。首先提出了擬合模型的概念,它的內容就是在未進行數據擬合以前先進行數學的估算先找出大致的適合該組數據的擬合函數,這裏我是經過MATLAB內置的cftool函數來擬合出多項式曲線,來觀察爲之後的精確數據擬合作下好好的準備。接下來時介紹了多項式曲線擬合的原理,這裏講解了多項式的組成,以及它在數學上的原理。與此同時也提出了polyfit、polyval的概念。最後就是對MATLAB內置的擬合函數poly進行了介紹,這部分比較重要,它是擬合出曲線的關鍵,它的用法也不少,在相關章節有詳細的講解。

(3)第三章是對MATLAB軟件應用的介紹。這個部分是在MATLAB中進行數據擬合的基礎,若是連這部分都沒搞的很清楚,那麼後面的擬合也會很是的艱難,因此此部分是很是重要的。首先對MATLAB作了一個簡要的概述,介紹一下MATLAB的用途,以及它的發展。後面介紹了MATLAB的優勢,介紹了它在數據處理以及在工程上、科學研究上的優點,對比了一下發現MATLAB是很是強大,並且對於使用者是很是方便的,同時它也是很是利於操做者去使用它完成目的的。接下來就是介紹怎麼去使用MATLAB,有很是多的細節值得咱們去學習,在這次畢業論文中使用最多,也是最基礎的就是矩陣了。它貫穿在整個論文的使用,書寫中,全部的數據操做都是基於此。固然也有一些其餘的操做,在本地方就不作詳細的闡述了,在相關的章節都有詳細的講解。最後就是舉了一個簡單的例子,來講明曲線擬合在MATLAB中的應用,以及它在數據擬合工具箱中擬合出的圖形。

(4)最後是使用MATLAB作了一個實際的應用。因爲要有數據去實驗,因此我這裏是從國家數據統計網上摘取了國民收入近10年來的數據,這裏摘取的數據不是不少,可是已經夠我在本次論文中的應用了。經過對這組數據進行多項式數據擬合,找出最適合的多項式函數,能夠預測將來幾年的數據變化,也能夠分析這10年來數據的變化,從而得出一個相對比較和的分析。

 

 

第二章  數據曲線擬合

2.1  擬合模型

因爲實際工程中測量出的數據,都是很難找出規律的,因此就換個角度先觀察找出數據之間的簡單關係從而創建一個模型,從而能使本身對未知的數據有個大致的瞭解。像這樣先組件的模型稱爲擬合模型。它的優勢就是可以使用之前學習的高數的知識來很近似地表達所測數據之間存在的關係。它實際上也就是數據擬合的精度和數學表示式簡化程度的一個折中。這個折中的方案,取決於你所測量的數據和實際工做中的須要。當本身創建一個數學模型後,就容易去擬合了,由於經過實驗發現擬合的階次越高,曲線的動盪越大,當有了一個模型以後,就能夠在模型階次附近來擬合曲線,這能夠節省不少時間同時還能夠增長擬合的精確度。例如,有些簡單的數據點能夠用一次或者二次多項式擬合出來的,就能夠利用數學上的公式計算,先簡單的估計出這些多項式的係數,而後再在MATLAB工具箱中進行精確的數據擬合。

2.2  多項式曲線擬合原理

在實際工程以及本身的實驗數據統計中,進行數據擬合的時候應該選適當的擬合數學上的公式。在通常的狀況下,都應該先根據已經提供的數據本身先畫出曲線圖,而後再分析這些數據點在座標上的位置再根據畫出的曲線圖來判斷選擇合適的擬合數學公式。

在實際工程以及本身的實驗數據統計中,對於那些複雜的測量數據咱們沒法直接使用 來表示兩組數據之間的關係的時候,這時咱們就但願經過某些科學計算來找到近似的表達式 來表示,並且咱們老是但願 越簡單越好。這樣,人們就提出了數據擬合的概念,數據擬合不要求咱們所構造的函數在座標上經過全部的數據點,只是要求咱們儘量的去逼近它,這樣就能很好的反應出數據點之間的通常關係。

若是如今有兩組數據 以及 它們間存在着函數關係 ,想用一個表達式 接近於F(x)而且代替它,那麼這個函數 取n次多項式就能夠。

 

多項式曲線擬合要求函數的值與平方值之間的平方誤差最小,這使得函數很是接近所得到的測試數據,所以下面的方程達到最小值:

 

 

這種讓誤差最小的方法最適合用於此,這是每一個數據分析者所但願的事情,同時也能準確的反應出所測數據之間的大致趨勢。

利用多項式進行數據擬合時,事實上是求一個係數向量,係數向量是一組多項式係數。在Matlab中,利用多項式擬合函數求多項式的係數,而後利用多項式函數計算函數逼近。polyfit的格式能夠表述以下:

 

多項式函數用於評價代數多項式,能夠表示以下:

 

若是x是某一個值時,那麼上述公式就是求在該點的值;若是x是向量或者矩陣時,那麼就對向量或者矩陣中的每一個值求多項式的值。

爲了加深對此的理解,這裏作了一個簡單的練習,以下:

多項式 ,取 和一個2*3矩陣爲自變量計算該多項式的值。程序以下:

>> A=[1,6,0,0,-8];       %4次多項式係數

>> x=1.1;            %取自變量爲一數值

>> y1=polyval(A,x)

y1 =

    1.4501

>> x=[1,1.2,-1;2,-1.8,1.4]         %給出一個矩陣x

x =

    1.0000    1.2000   -1.0000

    2.0000   -1.8000    1.4000

>> y2=polyval(A,x)       %分別計算矩陣x中各元素爲自變量的多項式之值

y2 =

   -1.0000    4.4416  -13.0000

   56.0000  -32.4944   12.3056

2.3  polyfit、polyval、plot函數

 

 

說明:x,y爲數據點,n爲多項式階數,返回p爲冪次從高到低的多項式係數向量p,x必須是單調的。矩陣s用於生成預測值的偏差估計。

多項式曲線求值函數:

 

調用格式:

 

說明:y=polyval(p,x)爲返回對應自變量x在給定係數P的多項式的值。

 使用polyfit函數的選項輸出s得出偏差估計Y DELTA。它假設polyfit函數數據輸入的偏差是獨立正態的,而且方差爲常數。則Y DELTA將至少包含50%的預測值。有以下數據:

表1:實例數據

T

1900

1910

1920

1930

1940

1950

1960

1970

1980

1990

2000

Y

76

92

106

123

132

151

179

203

227

250

281

y與t的經驗公式爲 ,代碼以下:

clear;

clf;                                                   %清除當前窗口

clc;

t = 1900:10:2000;                                         %時間t

y = [76 92 106 123 132 151 179 203 227 250 281];          %人口y

plot(t,y,'k*');

hold on;

% figure;                           %從新開一個圖

p1 = polyfit(t,y,2);

plot(t, polyval(p1, t));

axis([1900 2000 0 300]);                                %圖像xy軸範圍

disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1(1)),'b=',num2str(p1(2)),'   c=',num2str(p1(3))]));

結果以下:

y=   0.0094289 t^2 - 34.7482 t + 32061.5711

a=0.0094289   b=-34.7482   c=32061.5711

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖1 上實例擬合圖形

y與t的經驗公式爲 ,演示代碼以下:

clear;

clf;                                                    %清除當前窗口

clc;

t = 1900:10:2000;                                         %時間t

y = [76 92 106 123 132 151 179 203 227 250 281];          %人口y

yy = log(y);                                 %指數基尼必需的線性化變形

p2 = polyfit(t,yy,1);

b = p2(1);

a = exp(p2(2));

y2 = a * exp(b*t);                                     %指數擬合函數式

plot(t,y,'rp',t,y2,'k-');

grid off;

xlabel('時間t');

ylabel('人口數(百萬)');

title('人口數據');

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

圖2 人口變化擬合圖形

講解plot函數概念以前首先要了解它的語法結構,下面就列出它的語法:

plot(Y)
plot(X1,Y1,)
plot(X1,Y1,LineSpec,)
plot(’PropertyName’,PropertyValue,…)
plot(axes_handle,)

圖2若是y是m×n的數組,取m做爲x座標,y中的每一個列元素做爲y座標,畫n曲線。若是y是n的1或1,則1∶n是水平座標,y是座標表。若是Y是複雜的,圖(Y)等於圖(實(Y),IMAG(Y))。在其餘狀況下,座標數據的虛擬部分被忽略。

情節(X1,Y1,m)。若是x和y都是數組,並按列繪製座標數據,則它們必須具備相同的大小;若是X和Y中的一個是向量,另外一個是數組,那麼相同大小的X和Y對應於許多曲線;若是其中一個X和Y是標量,另外一個是矢量,那麼咱們將畫一個點沿着垂直的X軸或Y軸是離散的。

圖(X1,Y1,LeNEXEC)經過參數LeNEXEC指定曲線的曲線屬性,其中包括線條、標記和顏色。繪圖函數支持任意圖形組的同時繪製。plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2)此時徹底等效於

plot(X1,Y1,LineSpec1)

hlod all

plot(X2,Y2,LineSpec2)

MATLAB中提供的線型屬性有:

圖3 plot函數線型屬性

須要注意的是,當在LineSpec中設置曲線、標識符和顏色的三個屬性時,控制序列不受限制,能夠省略或部分省略。那就是R。*‘,’,‘R**-R’的形式是等價的,使用紅線鏈接各個節點,每一個節點使用「*」標記。

「PrimeType」,PrimeType設置由情節建立的全部曲線句柄對象的屬性。附錄中顯示了行對象屬性和屬性值。有關具體設置,請參考如下示例。固然,SET/GET也能夠用於設置。

情節指定座標系統,該座標系在AxeStHead座標系中繪製,在未指定時默認爲GCA。返回由圖建立的全部曲線句柄對象的句柄。每一個曲線對應於一個句柄,若是有n個曲線,h是n乘1個數組。

注意,當同時繪製多個曲線時,若是沒有指定曲線屬性,則在當前座標系中按順序使用ColorOrder和LineStyleOrder兩個屬性。

默認狀況下,MATLAB會在每次調用plot函數時自動將ColorOrder和LineStyleOrder重置爲DefaultAxesColorOrder和DefaultAxesLineStyleOrder。咱們能夠自定義默認的屬性,直到MATLAB關閉。Matlab將在下一次啓動時將默認的屬性重置爲工廠設置(工廠)。集(0,‘DefaultAxesColorOrder’,‘r b g | | | k’,……DefaultAxesLineStyleOrder ',' 。

使用hold all命令能夠防止在調用plot函數時自動替換ColorOrder和LineStyleOrder屬性。相反,它能夠被循環利用。請注意,只保留了屢次繪製的圖形(至關於NextPlot),但不能阻止屬性重置。此外,咱們能夠經過如下四個屬性設置標識符的顏色和大小。線寬-指定的行寬。

MarkerEdgeColor——指定標識符的邊緣顏色。

MarkerFaceColor——用指定的標識符填充顏色

標記大小-指定標識符的大小

注意,以上四個屬性適用於當前座標系中的全部曲線。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第三章  MATLAB

3.1  MATLAB概述

它是一款做用於科學計算領域的數學軟件,其軟件有交互式的特色,它的運算單元不要具有具體制定的矩陣位數,它是根據IEEE標準計算的。MATLAB主要包括數值計算和符號計算函數,以及繪圖函數和編程語言函數。它利用矩陣做爲數據運算的基本單元,使MATLAB中的矩陣運算變得很是高效。,它還提供了豐富的內置函數供人們使用,很是的方便快捷。同時MATLAB的繪圖能力也是很強的,能夠實現各類圖形的製做。除了上述說的以外,MATLAB也是一門編程語言,它具有大部分編程語言的特性,並且比其餘的編程語言要容易,而且效率更高,可是它的缺點也很明顯,便利的內置功能致使了它編譯的速度很慢,並且不能脫離MATLAB客戶端,這就很不方便了。最後,MATLAB還內置了不少能夠直接使用的工具箱,這也是MATLAB的核心功能,爲不少計算節省了不少力氣。MATLAB曲線擬合完成的方法有兩種:函數的形式以及圖形界面,這在後面的論文中會有大量的介紹。

3.2  MATLAB的優勢

MATLAB重要的組件同時也是最方便使用的是它的工具箱其中大多數都具備圖形界面。人電腦交互操做,容易學習無障礙,它還包括一個具備相對完整的調優的在線查詢和幫助系統嘗試系統,能夠直接運行而不編譯,尤爲能夠提供及時的偏差和偏差緣由析取,方便簡潔。MATLAB是一種用於控制語句、關係函數、數據結構、輸入輸出和麪向對象編程的矩陣/數組語言。員工能夠同時在命令窗口中聲明語句。輸入並執行命令。您還能夠運行預編程的M文件。MATLAB具備多種數學運算功能,幾乎涉及到全部的工程問題。它能夠經過實時的優化和容錯來調整,而不是底層的編程語言,這樣能夠大大減小編程工做量。它有一個很是方便的可視化函數,它能夠用圖形來表示向量和矩陣。它包括二維和三維可視化、圖像處理、動畫和渲染。將燈光添加到圖形中,顏色和四維數據等。對於有圖形處理需求的用戶,您能夠獲得最多偉大的滿意度。已經爲大多數用戶能夠訪問的領域開發了一組強大的模塊和工具包下次使用時,不須要用戶本身編寫代碼,特別適合初學者。除了平常工做此外,熟練還能夠實現系統仿真,圖形缺失部分的修復工做。它有一個程序擴展系統和特殊的應用程序子例程,這兩個子例程都專門用於某種學科並提出了神經網絡建模、模糊邏輯分析、信號降噪處理、模糊控

 

制系統等應用系統設計、小波分析和工程應用系統仿真。

3.3  MATLAB運行簡介

這裏主要介紹在完成畢業設計時所用到的有關MATLAB的知識。首先進行的就是對MATLAB界面的認識,在作實驗的過程當中用到的最多的就是MATLAB的命令行窗口,能夠在裏面輸入咱們要輸入的數據,而且利用MATLAB內置的函數來對咱們輸入的數據進行分析。在命令窗口「>>」以後輸入咱們想要輸入的數據或者是命令,當咱們按下Enter鍵以後,MATLAB就會解釋咱們輸入的指令。在進行試驗的過程當中,輸入的指令都是以向量的形式傳達給MATLAB終端,而在MATLAB中向量的表示都是以以下的形式存在:

 

如上所示,這樣的形式是表示一維向量,逗號是用來把這些值分隔開來。若是想要表示多維向量的話,就要在中間加入號,如輸入一個2*2的向量,在MATLAB中演示以下:

>> x=[1,2;3,4]

x =

1     2

   3     4

>> x=[1,2;3,4];

由上能夠看出一個2*2向量已經被表示出來。但是下面的卻沒有顯示結果,這就要提到「;」的做用了,它在MATLAB中,放在一段指令的後面的意思是不顯示這段指令所要呈現的效果。

在進行論文書寫時,同時在操做MATLAB的過程當中,也要用到「:」它的做用很大,能夠節省不少時間,主要的功能就是建立一組數據,而且能夠指定從一個值都另外一個值同時還能夠在中間加入想要的間隔數,示例以下:

>> x=1:5

x =

1     2     3     4     5

>> x=1:0.5:5

x =

1.0000    1.5000    2.0000    2.5000    3.0000    3.5000    4.0000    4.5000    5.0000

 

 

 

 

 

 

 

 

 

 

 

圖4 在MATLAB中應用代碼截圖

除了以上所說的在命令窗口中的操做,還有一個比較重要的就是MATLAB的工做區,這裏記錄着全部的變量和結果的內存空間,它和命令窗口同樣,不只存在於MATLAB內部,並且能夠在MATLAB主界面中能夠直接看到。

同時咱們在進行實驗的過程當中,當調用到某些函數的時候也會自動的跳出MATLAB圖形工具箱,這樣就使咱們可以直觀地看到數據曲線擬合直接的關係,同時也更利於咱們對數據結果進行分析。

同時爲了方便咱們平時編寫程序,我通常都是在MATLAB的編輯器中進行編輯,它運行時會保存一個.m文件。同理MATLAB程序能夠用兩種方式來執行,那就是命令行模式和m文件方式。m文件又分爲獨立的m文件以及函數m文件。獨立的m文件由命令描述行寫成以後存儲,那麼就能夠在MATLAB裏面單獨的調用執行。

3.4  MATLAB曲線擬合工具箱簡介

MATLAB 軟件自帶了一個功能很強大的擬合工具箱cftool,它的使用很是的方便並且實現不少類型的線性、非線性曲線擬合。我是在MATLAB R2016a中來演示這工具箱的使用,爲後面的仿真作好準備。首先介紹一下,我在MATLAB中調用曲線擬合用的方式是直接在命令行中輸入cftool,固然也有其餘的方法,這裏就不討論了。下面經過一個實例來加深對此的瞭解。

首先,在MATLAB輸入兩個向量,一個是你想要的X座標的數據,另外一個是Y座標的數據,輸入假設被稱爲向量X和Y向量,能夠看到這兩個向量的兩個向量,以確保兩個向量的元素的數量是一致的,若是不一致。語言沒法裝入工具箱。例如,輸入如下數據:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖5 MATLAB主界面

接下來在命令行中輸入「cftool」來開啓曲線擬合工具箱,效果以下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖6 cftool擬合界面

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


圖7 擬合界面選取數據位置

下面介紹曲線擬合cftool中能夠選取的函數,這個在上面的界面中選取

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖8 擬合界面選取擬合函數

 

對於擬合或迴歸類型,每種類型對應的擬合或迴歸是: 
    Custom Equations 用戶自定義函數 
    Expotential e指數函數 
    Fourier 傅立葉函數,含有三角函數 
    Gaussian 正態分佈函數,高斯函數 
    Interpolant 插值函數,含有線性函數,移動平均等類型的擬合 
    Polynomial 多項式函數 
    Power 冪函數 
    Rational 有理函數
    Smooth Spline (光滑插值或者光滑擬合,不太清楚) 
    Sum of sin functions 正弦函數類 
    Weibull 威布爾函數

擬合後的結果信息。這將顯示在「擬合」對話框的「結果」文本框中。擬合的主要統計信息是通常sin1模型:(函數形式)係數(含95%可信區間)(擬合常數在95%置信區間)

擬合度高:(統計結果)

上交所:(方差)

平方:(決定係數,不知道怎麼作)

調整平方:(修正後的斷定係數不知道如何修正)。

RMSE:(標準誤差)

舉個例子:

Linear model Poly4:
     

Coefficients (with 95% confidence bounds):
       p1 = -0.26  (-8.731, 8.211)
       p2 = 1.704  (-57.78, 61.19)
       p3 = -3.168  (-146.7, 140.4)
       p4 = 3.943  (-133.2, 141)
       p5 = 0.35  (-41.52, 42.22)
Goodness of fit:
  SSE: 0.1429
  R-square: 0.9959
  Adjusted R-square: 0.9796
  RMSE: 0.378

換句話說,若是你想導出這個擬合圖像,它是曲線在擬合工具窗口的File菜單下選擇Print to Figure,此時彈出一個新的圖像。窗口是要導出的圖像,它在這個圖窗口的File菜單中從新選擇export。選擇正確的格式(一般是JPEG),選擇正確的路徑並單擊OK。的圖片它能夠用於像Word這樣的編輯環境。要修改圖像的性質,例如數據點的大小和顏色,只需單擊對象上的右按鈕。幾乎有可能找到它。此外,程序用於擬合曲線。  n 爲選取的方法   進行曲線擬合後計算所獲得得值能夠將擬合曲線與源曲線畫出來: 
 
legend('ydata','fit'); 

 

 

 

 

 

 

 

 

 

 

 

 

圖9 導出擬合圖像

3.5 多項式數據擬合的MATLAB實現

多項式曲線擬合出來上面的方法以外,就是先使用polyfit函數求出多項式的係數,而後應用poly擬合出曲線圖。直接擬合出你想要的階次多項式,根據圖形來調整多項式的次數讓擬合出來的圖形勁量的逼近所給的數據點,下面舉個例子來講明此種方法的實現,數據以下:

表二 舉例數據

X

1

2

3

4

5

6

7

8

9

Y

9.4

4.3

1.1

0.6

0.07

0.3

0.5

1.6

3.4

程序以下:

>> x=1:9;

>> y=[9.4,4.3,1.1,0.6,0.07,0.3,0.5,1.6,3.4];

>> p2=polyfit(x,y,2);

>> p3=polyfit(x,y,3);

>> p4=polyfit(x,y,4);

>> x1=1:0.5:9;

>> y2=polyval(p2,x1);

>> y3=polyval(p3,x1);

>> y4=polyval(p4,x1);

>> plot(x,y,'rp',x1,y2,'--'.x1,y3,'k-.',x1,y4)

 

 

 

 

 

 

 

 

 

 

圖10 代碼在MATLAB界面中的截圖

 

擬合圖以下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖11 plot擬合圖形

在上面的圖中,五角星表明擬合點,(- - -)表明的是二次擬合,(-.-.-)表明的是三次擬合,(----)表明的是四次擬合。經過這次擬合出圖分析,階次越高擬合曲線的震盪就會越大,並且對於這次擬合的數據來看,就這三個階次的擬合結果,

4次擬合是最逼近原數據點的。這樣的分析爲之後的應用提供了理論基礎,更加利於後面的實驗的進行,同時也積累了不少的擬合經驗。

 

 

 

 

 

 

 

 

第四章  多項式數據擬合的應用

4.1  獲取數據

這次獲取的數據是從中華人民共和國國家統計網站上獲取的近10年來的國民總收入指數,國家在此方面進行了公示,以便咱們認識到國家的發展。國民總收入指數,反應了我國居民的生活水平,同時也可以揭示近些年來國家的發展,以及人民的生活水平。經過使用MATLAB多項式曲線擬合來分析這些數據從而獲得近些年國民總收入指數的變化趨勢,同時也可以得出中國國民總輸入指數的將來變化,以此來作以此研究。這次目的也是爲了更加深刻的研究基於MATLAB的多項式數據擬合,在實際方面的應用。一方面可以鍛鍊本身的實際動手能力,同時也爲之後的工做打下堅實的基礎。爲了方便咱們研究如下的表示用7表明2007年其餘的以此類推,如下是從國家統計網站上摘取的數據:

表3 國民總收入指數

X

7

8

9

10

11

12

13

14

15

16

Y

114.7

110.1

108.5

110.3

109.0

108.6

107.1

108.3

106.4

106.7

4.2  使用數據擬合工具箱獲取數據模型

經過使用MTALAB的內置曲線擬合工具箱,可以使咱們先對數據有個大致的認識,爲後面的數據擬合作好一個大概的預測。它的使用方法,就是輸入咱們獲得的數據,而後利用「cftool」引出曲線擬合的工具箱,可以顯示出圖形    界面,以便咱們觀察,分析。

代碼以下:

>> x=[7,8,9,10,11,12,13,14,15,16];

>> y=[114.7,110.1,108.5,110.3,109.0,108.6,107.1,108.3,106.4,106.7];

>> cftool

cftool使用多項式曲線擬合出的圖形以下:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖11 cftool擬合圖形界面

上圖選用的是9次多項式,同時也經過本身的觀察和分析得出,9次多項式擬合出的圖形是比較逼近原數據點的。這個結論只是一個大概的預測,具體的還用在MATLAB用多項式擬合曲線擬合出較多階次的多項式圖形,再來觀察哪一個階次的多項式是最逼近數據點。這種作法給咱們提供了一個大概的多項式模型,這在以前的文章中就有提到過,經過得出這個多項式模型,在這裏給咱們提供了一種理論依據,爲之後的曲線擬合打下基礎。

4.3  進行多項式曲線擬合

在這裏咱們使用polyfit函數得出指定階次多項式,而後再利用polyval擬合出得出的多項式的曲線圖形,讓這些圖形顯示在同一個座標中,而後觀察這些圖形的規律以及找出最接近曲線的擬合曲線。

代碼以下:

>> x=[7,8,9,10,11,12,13,14,15,16];     %年份的矩陣數據,7表明的是2017年,其餘以此類推

>> y=[114.7,110.1,108.5,110.3,109.0,108.6,107.1,108.3,106.4,106.7];

>> p7=polyfit(x,y,7);

 

 

>> p8=polyfit(x,y,8);

>> p9=polyfit(x,y,9);

>> x1=7:0.5:16;

>> y7=polyval(p7,x1);

>> y8=polyval(p8,x1);

>> y9=polyval(p9,x1);

>>plot(x,y,'rp',x1,y7,'k--',x1,y8,'c*-',x1,y9)

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖 12 保存.m文件界面

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

圖 13 plot函數擬合界面

上圖中的五角星表明的被測數據的點分佈,(- - -)黑色的曲線表明的是二次擬合,(*--)藍色的曲線表明的是8次擬合,其中沒有特殊曲線表明的是9次擬合。

    從上圖中的結果能夠看出9次擬合的震盪太大了,沒有在數據附近擬合出曲線,很顯然它是不適合這組數據的擬合的。而七、8次擬合曲線從上圖上看是差很少的,爲了計算的方便咱們就選擇7次擬合是對這組數據最好的擬合。從上面的這圖中,也能夠看出多項式曲線擬合的基本規律,那就是階次越高它的擬合曲線震盪就越大,而曲線也不是擬合曲線通過全部數據點就能夠的,也要分析這組數據的分佈狀況,而後結合圖形和數據點的分佈,找出最好的擬合階次,找到最佳的擬合曲線。

 

 

 

 

結束語

經過本次的基於MATLAB的多項式數據擬合方法研究畢業設計,我學到了不少理論知識,尤爲是對多項式進行了大量的理論學習,翻閱了大量了數學方面關於多項式的解釋,瞭解了多項式的生成以及原理。同時也詳細的學習了MATLAB的使用,以及MTALAB中不少內置的函數和工具箱。以及最後擬合出來的曲線也是我本身比較滿意的。

就理論方面,我以爲是我此次作畢業設計所缺乏的東西,因此我借閱了大量的圖書,以及在網上面查看了大量的文獻,最終把本身所須要的總結下來,這讓我瞭解到了大量的知識。主要了解的就是多項式的數學表達以及多項式的原理,尤爲是計算多項式偏差這一塊我之前都沒有接觸過,經過此次的畢業論文有了一個深入的瞭解。

就硬件方面的話就是更加的瞭解了MATLAB的使用,本身也看了不少這方面的圖書,同時也進行了大量的動手實驗。其中最令我映像深入的就是plot的使用,一開始仍是沒能成功擬合出曲線,再進行了大量的排錯以後,找出了問題的來源就是對plot使用不是很熟,因此在本篇文章中進行了詳細的說明。還有一些像ployfit、polyval、cftool的原理以及使用也在學習的過程當中掌握。

最後想要說的是,在經過本身大量的學習以及動手實踐以後可以作出一次完整的數據擬合實驗是很是有成就感的。我不會利用MATLAB的知識只是在這次論文的學習中,在之後的生活工做中我也會使用它去完成不少任務。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

參考文獻

[1]彭芳麟,梁穎,劉振興.在計算物理基礎課中用MATLAB培養學生的編程能力[J].大學物理.2013(09)

[2]唐衝,惠輝輝.基於Matlab的高斯曲線擬合求解[J].計算機與數字工程.2013(08)

[3]江海東,費嶽軍,應嶽.使用MATLAB擬合工具箱進行潮汐調和分析[J].海洋技術.2012(03)

[4]趙寶貴. Matlab在數據擬閤中的應用[J].科技廣場, 2007, 1:145-146.

[5]宋曉霞.基於MATLAB的通用數據擬合方法[J]. 山西大同大學學報(天然科學版),2014,30(4):1-6.

[6]常錦纔等.基於正交多項式的數據擬合方法[J].河北理工大學學報(天然科 學   版), 2011, 33(4): 80-84.

[7]白曉煊.基於Matlab的雷達試驗數據擬合[J].信息技術.2011(11)

[8]王海鵬,趙莉,王殿生,潘圓圓,孟祥鵬.基於MATLAB的均勻設計實驗數據多元非線性最小二乘擬合[J].化學工程與裝備. 2010(09)

[9]歐陽明鬆,徐連民.基於MATLAB的試驗數據擬合[J].南昌工程學院學報.2010(04)

[10]胡慶婉.使用MATLAB曲線擬合工具箱作曲線擬合[J].電腦知識與技術.2010(21)

[11]丁士海,韓之俊.基於數據擬合的非線性方法及Matlab解決方案[J].統計與決策.2009(08)

[12]周後卿,徐幼專.MATLAB在《複變函數與積分變換》中的應用[J].電腦知識與技術. 2018(04)

[13]歐陽明鬆,徐連民.基於MATLAB的試驗數據擬合[J].南昌工程學院學報. 2010(04)

[14]CRafael,RG Woods,《Digital Image Using MATLAB》[J]2004,21(84):197-199

[15]RC Gonzalez,RE Woods,SL Eddins,[J]Prentice Hall press,2007

[16]K.C.Toh,M.J.Todd,R.H.TutuncuOptimizationMethodsandSoftware,1999,11(1-4):545-581

[17]J Lofberg,IEEE International Symposium,2005,41(3):284-289

[18]KC Toh,Mj Todd,R H T,Optimization Methods softwares,1999,11(1-4)

相關文章
相關標籤/搜索