用matlab進行曲線擬合多項式擬合

時間 2021-09-07 05:17:17

1樓:百度文庫精選

內容來自使用者:beyond1215

matlab學習--多項式擬合(1)

(1)polyfit函式

matlab的polyfit函式用於多項式擬合,其語法為:

p = polyfit(x, y, k);

其中,x,y分別是橫縱座標向量,它們不僅元素個數相同,而且同為行向量或同為列向量。k為非負整數,是待擬合的多項式的最高次數。p是輸出項,為待擬合的多項式的係數向量(由高次到低次排列)。

例子:在matlab的命令視窗輸入以下**:

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

>> y = [3,5,7,9];

>> p = polyfit(x, y,1)

敲擊回車鍵,得到輸出結果:

p =    2.0000    1.0000

所以擬合得的函式就是:y = 2.0000x + 1.0000.

在進行多項式擬合時,必須注意的是,擬合的精度是有限的,一般而言,需要滿足以下條件:

記m為不重複的橫座標的數目,則擬合次數k <= m - 1,在此前提下儘量使用低次多項式進行擬合。

(2)polyval函式

polyval,顧名思義就是“多項式的值”,該函式的功能是將已知資料代入擬合得的多項式求值。語法格式:

y = polyval(p, x);

其中,p是已經擬合的多項式(比如說(1)中的p),x是自變數組成的向量,y是所求值組成的向量。

例子:在命令視窗輸入以下**:

>>clear

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

>> y = [3,5,7];

>> p = polyfit(x, y,1); %得到擬合多項式:y =2*x +1

>> t = [1,2,3,4,5];

>> s = polyval(p, t)

得到結果:

e = sum((y - polyval(p, x)).^2).

2樓:匿名使用者

看影象應該是正態分佈

可以用工具箱做cftool,選擇gaussian,

number of stems選擇4

得出f(x) = a1*exp(-((x-b1)/c1)^2) + a2*exp(-((x-b2)/c2)^2) + a3*exp(-((x-b3)/c3)^2) + a4*exp(-((x-b4)/c4)^2)

a1 =   4.258e+04  (2.817e+04, 5.7e+04)

b1 =   4.358e+04  (4.218e+04, 4.499e+04)

c1 =        1791  (189.8, 3392)

a2 =        4765  (-2297, 1.183e+04)

b2 =    5.37e+04  (5.104e+04, 5.637e+04)

c2 =        4062  (-3728, 1.185e+04)

a3 =   1.218e+04  (-4.117e+04, 6.553e+04)

b3 =   7.256e+04  (4.343e+04, 1.017e+05)

c3 =   2.602e+04  (-5.024e+04, 1.023e+05)

a4 =    1.25e+19  (-7.416e+23, 7.416e+23)

b4 =  -4.532e+06  (-7.788e+09, 7.779e+09)

c4 =   7.715e+05  (-6.608e+08, 6.623e+08)

結果比較接近

3樓:匿名使用者

你使用matlab2014a的curve fitting工具擬合吧

如何使用matlab進行多項式擬合的計算? 255

怎麼用matlab進行多元多項式擬合

4樓:匿名使用者

例項1先看一個具體的例子,通過構造一系列離散的二維點集,然後用不同階次的多項式來擬合,比較哪個效果更好。最後說明多項式擬合在matlab中的用法。

2首先啟動matlab,選擇編輯器,再新建一個命令檔案。

3然後,在編輯器視窗中輸入本題的**。如下圖所示。並儲存,此處命名為dxsnh。

4需要注意的是,儲存檔案的位置要與當前搜尋路徑的位置保持一致。這可以通過右鍵編輯視窗的檔案,在彈出的下拉框中選擇。

5最後再命令列視窗處輸入dxsnh,並敲入鍵盤上的enter建。可以看出階數越高,曲線與擬合點擬合得越好。

end命令解釋

1通過上面的例子知道,matlab實現多項式擬合的關鍵命令是polyfit。

2該命令的格式如下

[p,s]=polyfit(x,y,n)

功能介紹:對於已知的資料x、y進行多項式擬合,擬合的多項式的階數為n,其中p為多項式的係數矩陣,s為**誤差估計值的矩陣。

5樓:範靖丙如曼

我教你個方法,希望你好好理解:c=

[ones(length(x1),

1)x1'

x2'];

temp

=pinv(c)*y';

ysim

=c*temp;

plot(y');

hold

on;plot(ysim,

'ro');

legend('y',

'ysim');

看看效果~~

temp裡面的三個值就是對應項的引數:y

=temp(1)

+temp(2)*x1

+temp(3)*x2;

6樓:馬克

x1=[1.5 1.5 2 2 2.5 2.5 2.5 2.5 3 3 3 3];

x2=[0.05 0.1 0.

15 0.2 0.05 0.

1 0.15 0.2 0.

05 0.1 0.15 0.

2];y=[1 0.99 0.98 0.

97 0.98 0.975 0.

97 0.965 0.975 0.

97 0.965 0.96];

cftool

先執行以上三個語句,接著會出來一個新圖,再在上面點“資料”,載入x1,x2,再點擬合,在出來的新圖裡選“新擬合”,再在選擇擬合型別為“高斯”,接下來點“應用就行了

7樓:匿名使用者

樓上的cftool很好用,也很方便

如果你非要用程式做。。。。。。。

請先把重複的資料去掉,否則沒法擬合或者出錯誤不知道樓主這組資料**來的,我以前也有過類似的問題,最後直接放棄啦摟著可以看看,對於一個x值有兩個y值,甚至多達4個,你可以大致描個點試試,對於這樣的資料點基本擬合不出合適的曲線,因為有很多曲線合適也不合適

所以,樓主可以換組資料

這樣的資料,真的沒法擬合

當然,小弟能力有限,沒準有大蝦可以解決

matlab如何做線性擬合

8樓:一棵無所不知的小白菜

方法一1、最常用的是多項式擬合,採用polyfit函式,在命令視窗輸入自變數x和因變數y。

2、以二次多項式擬合為例,輸入p=polyfit(x,y,2),如果想擬合更高次的多項式,更換括號內數字即可。

方法二2、輸入自變數x和因變數y。

3、選擇擬合方式,有多項式擬合polynomial,高斯擬合gaussian,冪指數擬合power等等,本次以多項式擬合為例。

4、通過資料計算,可以獲得曲線引數(曲線函式中的各項係數),從而實現曲線擬合。

9樓:匿名使用者

matlab中線性擬合可以使用多項式擬合函式polyfit()實現,其呼叫格式為

p = polyfit(x,y,n)

其中,x,y是需要擬合的資料,n是擬合的多項式的最高次數,p是擬合的多項式的係數。

例項演示如下:

1、示例資料

x=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2]

y=[-8,-236,-415,-562,-701,-860,-961,-1082,-1188,-1304,-1405,-1534]

擬合方程:y=a+bx

2、matlab**

>> x=[0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2];

>> y=[-8,-236,-415,-562,-701,-860,-961,-1082,-1188,-1304,-1405,-1534];

>> p = polyfit(x,y,1)

>> plot(x,y,'o',x,polyval(p,x))

3、結果及說明

p =1.0e+003 *

-1.3253    0.0068

表示擬合的線性公式為 : y = -1325.3x+6.8

10樓:趣味生活大講堂

把x,y資料輸入matlab中,然後輸入cftool1 在介面裡點data,輸入x和y的值

linear model poly1:

f(x) = p1*x + p2

coefficients (with 95% confidence bounds):

p1 =       -1325  (-1429, -1222)p2 =       6.788  (-69.34, 82.92)goodness of fit:

sse: 3.082e+004

r-square: 0.9879

adjusted r-square: 0.9867rmse: 55.51

這是執行結果。

matlab中的polyfit用做擬合,如何確定多項式的階數n呢? 即polyfit(x,y,n)中的n。謝謝!

11樓:匿名使用者

這個階數是不能事先確定的。一般通過多試幾次,然後取一條最好的。

12樓:匿名使用者

一般來講,階數越高,擬合的曲線越貼近於實際測量點,但階數過高,計算量會增大。

用matlab進行曲線擬合時,怎麼確定要擬合的多項式次數?比如有3000個點,那麼多項式的次數取多少合適呢? 5

13樓:匿名使用者

最好是先看看資料的規律,從低次到高次不斷的試驗,當前幾項係數為零時,就可以停止了,一般不會超過6次的,最好能傳上資料來看看

已知4個點,請問如何用matlab進行3次多項式擬合成曲線??**等

14樓:

x=[220 280 340 400];

y=[101 70.5 51 24];

x0=200:1:400;

f=polyfit(x,y,3);

f1=polyval(f,x0);

plot(x,y,'-r',x0,f1,'-b')希望會幫你

15樓:

x=[220 280 340 400];

y=[101 70.5 51 24];

polyfit(y,x,3)

ans =

0.0005 -0.0951 2.5875 385.3642

ans為3次多項式係數

用matlab系統命令,做多項式次數為3,5,6的擬合曲線,做圖。

16樓:匿名使用者

直接複製到命令視窗就可以執行。可以出圖。

程式沒有任何錯誤。

matlab中的指數曲線擬合問題,我有函式,他的格式是y exp x

華工大學生 樓上的分析很好,不過他先入為主了.就是說先給定了a值,然後來按擬合,確實是截距為0的,但實際資料卻不是這麼好.就按他給的例子,我分析並寫了下面的 你執行一下就有更深的體會 a 0.3145 x 0.3 0.01 3 y exp x a plot x,y ly log y lx x ran...

細菌生長用origins的什麼曲線擬合

用改良肉湯5,50,750ml連續繼代培養雞大腸桿苗074,0107和078三個血清型菌株。在最終使用的肉湯預熱至37 條件下,測定各菌株不同培養時間的菌落形成單位,以菌數的對數作縱座標,培養時間作橫座標,繪製出各菌株的生長曲線。在本試驗條件下,3個血清型菌株具有相似的生長模式,均可劃分為3個時期,...

如何根據matlab擬合的曲線讀出影象中點的座標值

樓主的意思是 已知 上的一條曲線,如何獲取該曲線上點的座標 x,y 下面有段程式,是本人讀曲線座標所寫,看看對樓主是否有幫助 clcclear all im1 imread runx2.jpg 樓主在此替換成自己的 im rgb2gray im1 im im end 1 1,imshow im m,...