matlab線性擬合

時間 2021-05-07 20:00:04

1樓:刻舟不為劍

線性擬合如下:

x=[0 20 40 60 100 130 160 190];

y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896];

a=polyfit(x,y,1);

xi=0:0.001:200;

yi=polyval(a,xi);

plot(x,y,'go','markeredgecolor','k','marke***cecolor','g','markersize',6)

xlabel('深度/m','fontsize',16);

ylabel('溫度/℃','fontsize',16);

axis([0 200 12 20])

hold on

plot(xi,yi,'linewidth',2,'markersize',16)

legend('原始資料點','擬合曲線')

sprintf('直線方程:y=%0.5gxx+%0.5g',a(1),a(2))

指數擬合如下:

先定義函式:

function y=nhfun(b,x)

y=b(1)*exp(b(2)*x)+b(3);

在執行程式:

x=[0 20 40 60 100 130 160 190];

y=[18 17.586 17.136 16.704 15.84 15.129 14.544 13.896];

x0=[0,1,0]  %設定初始值

b=lsqcurvefit(@nhfun,x0,x,y);

xi=0:0.001:200;

yi=b(1)*exp(b(3)*xi)+b(2);

plot(x,y,'cp','markeredgecolor','k','marke***cecolor','g','markersize',6)

hold on

plot(xi,yi,'linewidth',2,'markersize',16)

legend('原始資料點','擬合曲線')

sprintf('曲線方程

!!!曲線方程程式執行時會報錯,是因為你的x資料中有一個為0,這個不影響結果的

圖每次只能發一張,所以我發到你郵箱哈

2樓:匿名使用者

指數擬合,設y=ce^(ax)

function z=e(u)

a=u(1);

c=u(2);

z=(c-18).^2+(c.*ecp(20a)-17.

586.^2+(c.*exp(40*a)-17.

136).^2+......+(c.

exp(190*a)-13.896).^2;

再然後用fmins('e',[1,1])求z的最小值可以得到a和c的值

3樓:仲罡國雨信

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

4樓:伊遠湯辛

對上述的兩列資料進行多項式擬合,使用polyfit函式就可以,我們依次把各種次數都來擬合一下,結果一看便知:

一次多項式擬合(y=a1*x+b):

a1=0.033686757990868

b=0.516278538812787

二次多項式擬合(y=a1*x^2+a2*x+b):

a1=-0.000036213214245a2=0.045307231192030

b=-0.096059630138556

三次多項式擬合(y=a1*x^3+a2*x^2+a3*x^+b):

a1=-0.000000056761080a2=-0.000008613967773a3=0.041645897184442

b=0.018065089350326

到這裡差不多就看出來了吧,一次多項式擬合的結果可以說就已經很不錯了,二次多項式的二次項係數太小了,也就是說明二次項對於y的影響是微乎其微的,雖然說能通過方差檢驗證明其在95%的置信水平下對y的影響顯著,但是在實際情況中,我們一般會選取一次多項式,下面附一次多項式的各個檢驗統計量:

linear

model

poly1:

f(x)

=p1*x+p2

coefficients

(with

95%confidence

bounds):p1=

0.03369

(0.03097,

0.03641)p2=

0.5163

(0.05116,

0.9814)

goodness

offit:

sse:

0.5078

r-square:

0.9935

adjusted

r-square:

0.9924

rmse:

0.2909

用matlab怎麼將資料擬合成直線?

5樓:夢幻初雪

函式polyfit用於多項

bai式曲線擬du合

p=polyfit(x,y,m)

其中, x, y為已知資料zhi點向量, 分別表示橫dao,縱座標, m為擬合多項式的次數回, 結果返回m次擬答合多項式係數, 從高次到低次存放在向量p中.

利用y0=polyval(p,x0),可求得多項式在x0處的值y0源程式如下:

x=[1 2 3 4 5];

y=[3 6 8 11 15];

p=polyfit(x,y,1);

x0=1:7;

plot(x,y,'*',x0,polyval(p,x0));

matlab中nlinfit非線性擬合求引數

袁怡圃 補充回答 資料不好 建立函式檔案 function y myfun beta,x y 2.350176 beta 1 1 1 beta 2 1 1 x 1 1 beta 2 beta 2 2.x 1 1 beta 2 1 beta 2 x 1 1 beta 2 0.5 x 2 執行 x 0....

matlab擬合非線性函式,如何用matlab進行已知函式的非線性擬合

兔子和小強 線性模型 非線性模型是以待優化引數w為參考 而不是看x y w x 表示轉置 描述的是線性模型。題目中要擬合的函式是 y w0 w1 cos a wn cosna,它同樣符合y w x,其中x 1 cosa cosna 設x構成的集合是x,y構成的集合是y,可依據最小二乘法求出w xx ...

matlab擬合問題

直接用左除就行了 定義x和y為如下形式 y y1 y2.y56 x 1 x11 x12 x16 1 x21 x22 x26 1 x56,1 x56,2 x56,6 然後a x y 就出來了 曲線你有6個自變數怎麼畫啊 你把a0,a1,a2,a3,a4,a5,a6看成未知數。把你的56個資料代入 y1...