MATLAB中想擬合一條曲線,求大神幫忙寫個程式y a b exp c x 想擬合得出a b c引數

時間 2021-06-14 21:41:30

1樓:飛躍夢想華

a = -4167;

b = 4168;

c = 0.0005339 ;

不過擬合的效果不是很好

請問有人能給一個matlab的擬合形如y=a+b*exp(c*x)+d*exp(e*x)的函式的程式嗎?

2樓:匿名使用者

可以通過下列**來實現:

x=[。。。。。。];

y=[。。。。。。];

fun=@(a,x)[a(1)+a(2).*exp(a(3).*x)+a(4).*exp(a(5).*x)];

x0=rand(1,5);

[a,resnorm,residual,exitflag]=lsqcurvefit(fun,x0,x,y)

e=a(5),d=a(4),c=a(3),b=a(2),a=a(1)

擬合函式y=a*exp(b*x)+c 20

3樓:匿名使用者

function res = user_fit(x,y)% 功能:擬合y = a*exp(b*x)+c% 輸入:x,y 待擬合資料

% 輸出:係數 a,b,c

f = @(a,x) a(1).*exp(a(2)*x) + a(3); % 擬合形式,陣列a即代表[a,b,c]

a0 = [1,1,1]; % 假設初始值res = lsqcurvefit(f,a0,x,y); % 擬合結果儲存在res=[a,b,c]

matlab非線性擬合問題。

4樓:手機使用者

要新建兩個檔案:

主檔案,test.m

function test

clear

clcx = [51.885; 86.4; 134.73; 157.74; 240.6; 321.15; 374.05];

f = [-21.4823; -21.0836; -20.

98485; -20.90685; -20.30025; -19.

5936; -16.960725];

ft = fittype( 'fit_func( x, t )' );

cfun = fit( x, f, ft, 'startpoint', -0.01 ); % 開始擬合

cfun % 輸出擬合引數等

plot( cfun, x, f ) % 畫出擬合後曲線和原始資料點

end函式檔案,用於自定義的函式:fit_func.m

function f = fit_func( x, t )

j = 21.18;

li = 1e-6;

voc = 0.418;

ld = t * ( voc - x );

f = j*ld ./ ( li*(1-exp(-ld/li)) );

可以保證執行輸出結果,執行後自動繪出曲線和原始資料點,但是結果可能不會令人滿意。我不保證編碼時完全正確,但基本思想就是這樣。你需要仔細檢查**,試著調正fit函式中startpoint,還有其他選項(參見文件中fitoptions的說明),直到曲線和資料點吻合到滿意為止。

當然也可能是該函式不是這批資料點的理想模型,換成別的會更好。

使用matlab做y=a+b/x類曲線擬合,求詳細程式

5樓:匿名使用者

>> fun=inline('c(1)+c(2)./x','c','x');

>>c=lsqcurvefit(fun,[10,20],x,y)c =1.0e+003 *

0.0464 8.4241

即a=464,b=8424.1

6樓:eng林

令x=1/x,y=y;y=a+b/x變為y=a+b*x;

x=1/x;

y=y;

polyfit(x,y,1)

求寫一個matlab曲線擬合程式或者spss的求解過程。 50

7樓:匿名使用者

因為你沒給資料,只能給你描述下

1,構建內連函式

f=inline('m(1)+m(2)/((1+exp(m(3)-m(4)*x))*(1+exp(m(5)-m(6)*x)))','m','x');

2.然後設定x的範圍,假設:

x=1:10;

3.給定初值

m0=[1 1 1 1 1 1];

4.使用函式擬合

[mm,res]=lsqcurvefit(f,m0,x,y)祝好。

matlab擬合問題 y=a*exp(b*x) + c*exp(d*x) 知道x y的值 怎麼得到引數a b c d的值和任一點 x0處的y值

8樓:匿名使用者

a=    0.0208

b=    0.9515

c=   1.0649

d=   -2.1877

當x=1.64時,y=0.1287

9樓:森琛

以後碰到這種問題,matlab有一個cftool工具,使用簡單。線性的、指數的、冪函式等等常見的方程的係數都能求出來,詳情見附件。

matlab曲線擬合怎麼寫

10樓:

x=[26.3 33.5 39.1 43.1 47.0 50.0 54.5 56.8 64.9 72.0 77.0];

y=[8.85 8.17 7.49 7.16 6.81 6.58 6.21 5.91 5.48 5.11 5.98];

%多項式擬合

n=1;

a=polyfit(x,y,n); %n是給定的多項式的次數,擬合出來的結果a是係數向量

y1=polyval(a,x); %計算出擬合的y值

plot(x,y,'k*',x,y1,'r-'); %畫出資料對比圖,黑點是原始資料,紅線是擬合曲線

%指定函式擬合

f=fittype('a*e^(b*x)+c'); %引號裡的是你的函式模型,預設是以x為自變數,其餘為待定引數

fity=fit(x,y,f) %曲線擬合,會給出擬合結果

%再根據給出的結果計算出新的y值,畫圖神馬的

11樓:陌沫義

n=1;

a=polyfit(x,y,n); %n給定項式數擬合結a係數向量y1=polyval(a,x); %計算擬合y值plot(x,y,'k*',x,y1,'r-'); %畫資料比圖黑點原始資料紅線擬合曲線

%指定函式擬合

f=fittype('a*e^(b*x)+c'); %引號函式模型預設x自變數其餘待定引數

fity=fit(x,y,f) %曲線擬合給擬合結%再根據給結計算新y值畫圖神馬

在執行matlab程式設計進行資料的處理過程當中,我們常常用到matlab曲線擬合,但是工具箱由於需要人工互動,得到的擬合結果,需要人工的去提取,再輸入,所以,工具箱擬合結果十分不適合呼叫,以及繼續下面的操作,所以我們需要用到matlab曲線擬合函式,並且以最常用的多項式擬合函式為例作為matlab曲線擬合例子,

12樓:匿名使用者

一樓說的很詳細,如果你不想呼叫現成函式想自己寫諮詢我

13樓:市川謝浪

擬合用polyfit和polyval.

b=polyfit(x,y,2);%進行2次擬合,b是多項式前面的值。就如2次擬閤中y=ax+b,a,b的值。

yy=polyval(b,x);%得到擬合後y的新值plot(x,yy)%畫擬合圖

matlab更多知識

怎樣使用matlab擬合y=a*exp(bx)+c*exp(dx)曲線?用什麼**?

14樓:匿名使用者

p0=[1 1 1 1];

f=@(x,a,b,c,d)a*exp(b*x)+c*exp(d*x);

p=fminsearch(sum((@(p)f(xdata,p(1),p(2),p(3),p(4))-ydata).^2),p0,a,b)

15樓:

請先執行cftool命令,然後就懂了。