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命令,然後就懂了。