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...