日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

matlab曲线拟合法,MATLAB曲线拟合

發(fā)布時間:2025/3/20 69 豆豆
生活随笔 收集整理的這篇文章主要介紹了 matlab曲线拟合法,MATLAB曲线拟合 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

曲線擬合

實例:溫度曲線問題

氣象部門觀測到一天某些時刻的溫度變化數(shù)據(jù)為:

t

0

1

2

3

4

5

6

7

8

9

10

T

13

15

17

14

16

19

26

24

26

27

29

試描繪出溫度變化曲線。

曲線擬合就是計算出兩組數(shù)據(jù)之間的一種函數(shù)關(guān)系,由此可描繪其變化曲線及估計非采集數(shù)據(jù)對應(yīng)的變量信息。

曲線擬合有多種方式,下面是一元函數(shù)采用最小二乘法對給定數(shù)據(jù)進(jìn)行多項式曲線擬合,最后給出擬合的多項式系數(shù)。

1.線性擬合函數(shù):regress()

調(diào)用格式:?b=regress(y,X)

[b,bint,r,rint,stats]= regress(y,X)

[b,bint,r,rint,stats]= regress(y,X,alpha)

說明:b=regress(y,X)返回X與y的最小二乘擬合值,及線性模型的參數(shù)值β、ε。該函數(shù)求解線性模型:

y=Xβ+ε

β是p′1的參數(shù)向量;ε是服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)干擾的n′1的向量;y為n′1的向量;X為n′p矩陣。

bint返回β的95%的置信區(qū)間。r中為形狀殘差,rint中返回每一個殘差的95%置信區(qū)間。Stats向量包含R2統(tǒng)計量、回歸的F值和p值。

例1:設(shè)y的值為給定的x的線性函數(shù)加服從標(biāo)準(zhǔn)正態(tài)分布的隨機(jī)干擾值得到。即y=10+x+ε

;求線性擬合方程系數(shù)。

程序: x=[ones(10,1) (1:10)'];

y=x*[10;1]+normrnd(0,0.1,10,1);

[b,bint]=regress(y,x,0.05)

結(jié)果:?x =

1?1

1?2

1?3

1?4

1?5

1?6

1?7

1?8

1?9

1?10

y =

10.9567

11.8334

13.0125

14.0288

14.8854

16.1191

17.1189

17.9962

19.0327

20.0175

b =

9.9213

1.0143

bint =

9.7889?10.0537

0.9930?1.0357

即回歸方程為:y=9.9213+1.0143x

2.多項式曲線擬合函數(shù):polyfit( )

調(diào)用格式:?p=polyfit(x,y,n)

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

說明:x,y為數(shù)據(jù)點,n為多項式階數(shù),返回p為冪次從高到低的多項式系數(shù)向量p。矩陣s用于生成預(yù)測值的誤差估計。(見下一函數(shù)polyval)

例2:由離散數(shù)據(jù)

x

0

.1

.2

.3

.4

.5

.6

.7

.8

.9

1

y

.3

.5

1

1.4

1.6

1.9

.6

.4

.8

1.5

2

擬合出多項式。

程序:

x=0:.1:1;

y=[.3

.5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2];

n=3;

p=polyfit(x,y,n)

xi=linspace(0,1,100);

z=polyval(p,xi);

%多項式求值

plot(x,y,'o',xi,z,'k:',x,y,'b')

legend('原始數(shù)據(jù)','3階曲線')

結(jié)果:

p =

16.7832?-25.7459?10.9802?-0.0035

多項式為:16.7832x3-25.7459x2+10.9802x-0.0035

曲線擬合圖形:

如果是n=6,則如下圖:

也可由函數(shù)給出數(shù)據(jù)。

例3:x=1:20,y=x+3*sin(x)

程序:

x=1:20;

y=x+3*sin(x);

p=polyfit(x,y,6)

xi=linspace(1,20,100);

z=polyval(p,xi);

%多項式求值函數(shù)

plot(x,y,'o',xi,z,'k:',x,y,'b')

legend('原始數(shù)據(jù)','6階曲線')

結(jié)果:

p =

0.0000?-0.0021?0.0505?-0.5971?3.6472

-9.7295?11.3304

再用10階多項式擬合

程序:x=1:20;

y=x+3*sin(x);

p=polyfit(x,y,10)

xi=linspace(1,20,100);

z=polyval(p,xi);

plot(x,y,'o',xi,z,'k:',x,y,'b')

legend('原始數(shù)據(jù)','10階多項式')

結(jié)果:p =

Columns 1 through 7

0.0000?-0.0000?0.0004?-0.0114?0.1814?-1.8065?11.2360

Columns 8 through 11

-42.0861?88.5907?-92.8155?40.2671

可用不同階的多項式來擬合數(shù)據(jù),但也不是階數(shù)越高擬合的越好。

3.

多項式曲線求值函數(shù):polyval( )

調(diào)用格式:?y=polyval(p,x)

[y,DELTA]=polyval(p,x,s)

說明:y=polyval(p,x)為返回對應(yīng)自變量x在給定系數(shù)P的多項式的值。

[y,DELTA]=polyval(p,x,s) 使用polyfit函數(shù)的選項輸出s得出誤差估計Y

DELTA。它假設(shè)polyfit函數(shù)數(shù)據(jù)輸入的誤差是獨立正態(tài)的,并且方差為常數(shù)。則Y DELTA將至少包含50%的預(yù)測值。

4.

多項式曲線擬合的評價和置信區(qū)間函數(shù):polyconf( )

調(diào)用格式:?[Y,DELTA]=polyconf(p,x,s)

[Y,DELTA]=polyconf(p,x,s,alpha)

說明:[Y,DELTA]=polyconf(p,x,s)使用polyfit函數(shù)的選項輸出s給出Y的95%置信區(qū)間Y

DELTA。它假設(shè)polyfit函數(shù)數(shù)據(jù)輸入的誤差是獨立正態(tài)的,并且方差為常數(shù)。1-alpha為置信度。

例4:給出上面例1的預(yù)測值及置信度為90%的置信區(qū)間。

程序:?x=0:.1:1;

y=[.3

.5 1 1.4 1.6 1.9 .6 .4 .8 1.5 2]

n=3;

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

alpha=0.05;

[Y,DELTA]=polyconf(p,x,s,alpha)

結(jié)果:

p =

16.7832?-25.7459?10.9802?-0.0035

s =

R:

[4x4 double]

df: 7

normr: 1.1406

Y =

Columns 1 through 9

-0.0035?0.8538?1.2970?1.4266?1.3434?1.1480?0.9413?0.8238?0.8963

Columns 10 through 11

1.2594?2.0140

5.

穩(wěn)健回歸函數(shù):robust( )

穩(wěn)健回歸是指此回歸方法相對于其他回歸方法而言,受異常值的影響較小。

調(diào)用格式:?b=robustfit(x,y)

[b,stats]=robustfit(x,y)

[b,stats]=robustfit(x,y,’wfun’,tune,’const’)

說明:b返回系數(shù)估計向量;stats返回各種參數(shù)估計;’wfun’指定一個加權(quán)函數(shù);tune為調(diào)協(xié)常數(shù);’const’的值為’on’(默認(rèn)值)時添加一個常數(shù)項;為’off

’時忽略常數(shù)項。

例5:演示一個異常數(shù)據(jù)點如何影響最小二乘擬合值與穩(wěn)健擬合。首先利用函數(shù)y=10-2x加上一些隨機(jī)干擾的項生成數(shù)據(jù)集,然后改變一個y的值形成異常值。調(diào)用不同的擬合函數(shù),通過圖形觀查影響程度。

程序:x=(1:10)’;

y=10-2*x+randn(10,1);

y(10)=0;

bls=regress(y,[ones(10,1) x]) %線性擬合

brob=robustfit(x,y) %穩(wěn)健擬合

scatter(x,y)

hold on

plot(x,bls(1)+bls(2)*x,’:’)

plot(x,brob(1)+brob(2)*x,’r‘)

結(jié)果 : bls =

8.4452

-1.4784

brob =

10.2934

-2.0006

分析:穩(wěn)健擬合(實線)對數(shù)據(jù)的擬合程度好些,忽略了異常值。最小二乘擬合(點線)則受到異常值的影響,向異常值偏移。

6.

向自定義函數(shù)擬合

對于給定的數(shù)據(jù),根據(jù)經(jīng)驗擬合為帶有待定常數(shù)的自定義函數(shù)。

所用函數(shù):nlinfit( )

調(diào)用格式:?[beta,r,J]=nlinfit(X,y,’fun’,betao)

說明:beta返回函數(shù)’fun’中的待定常數(shù);r表示殘差;J表示雅可比矩陣。X,y為數(shù)據(jù);‘fun’自定義函數(shù);beta0待定常數(shù)初值。

例6:在化工生產(chǎn)中獲得的氯氣的級分y隨生產(chǎn)時間x下降,假定在x≥8時,y與x之間有如下形式的非線性模型:

現(xiàn)收集了44組數(shù)據(jù),利用該數(shù)據(jù)通過擬合確定非線性模型中的待定常數(shù)。

x?y?x?y?x?y

8?0.49?16?0.43?28?0.41

8?0.49?18?0.46?28?0.40

10?0.48?18?0.45?30?0.40

10?0.47?20?0.42?30?0.40

10?0.48?20?0.42?30?0.38

10?0.47?20?0.43?32?0.41

12?0.46?20?0.41?32?0.40

12?0.46?22?0.41?34?0.40

12?0.45?22?0.40?36?0.41

12?0.43?24?0.42?36?0.36

14?0.45?24?0.40?38?0.40

14?0.43?24?0.40?38?0.40

14?0.43?26?0.41?40?0.36

16?0.44?26?0.40?42?0.39

16?0.43?26?0.41

首先定義非線性函數(shù)的m文件:fff6.m

function yy=model(beta0,x)

a=beta0(1);

b=beta0(2);

yy=a+(0.49-a)*exp(-b*(x-8));

程序:

x=[8.00 8.00 10.00 10.00 10.00 10.00 12.00 12.00 12.00 14.00

14.00 14.00...

16.00 16.00 16.00 18.00 18.00 20.00 20.00 20.00 20.00 22.00 22.00

24.00...

24.00 24.00 26.00 26.00 26.00 28.00 28.00 30.00 30.00 30.00 32.00

32.00...

34.00 36.00 36.00 38.00 38.00 40.00 42.00]';

y=[0.49 0.49 0.48 0.47 0.48 0.47 0.46 0.46 0.45 0.43 0.45 0.43 0.43

0.44 0.43...

0.43 0.46 0.42 0.42 0.43 0.41 0.41 0.40 0.42 0.40 0.40 0.41 0.40

0.41 0.41...

0.40 0.40 0.40 0.38 0.41 0.40 0.40 0.41 0.38 0.40 0.40 0.39

0.39]';

beta0=[0.30 0.02];

betafit = nlinfit(x,y,'sta67_1m',beta0)

結(jié)果:betafit =

0.3896

0.1011

即:a=0.3896 ,b=0.1011

總結(jié)

以上是生活随笔為你收集整理的matlab曲线拟合法,MATLAB曲线拟合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。