如何用MATLAB將一組散點資料擬合成對數函式

2021-08-09 09:55:03 字數 5807 閱讀 9890

1樓:匿名使用者

x=[0.06 0.15 0.24 0.32 0.45 0.55 0.67 0.76 0.85 0.95 1];

y=[0.625 0.455 0.41 0.39 0.26 0.15 0.03 0.01 -0.01 -0.05 -0.06];

ba=[log10(x(:)),ones(size(x(:)))]\y(:); %如果你的lgs是以自然對數為底的話,請用log函式代替log10,下面作圖也是一樣的.

a=ba(2)

b=ba(1)

plot(x,y,'*',x,a+b*log10(x),'r-')legend('原始資料','擬合值')

2樓:匿名使用者

x=[0.06 0.15 0.24 0.32 0.45 0.55 0.67 0.76 0.85 0.95 1];

y=[0.625 0.455 0.41 0.39 0.26 0.15 0.03 0.01 -0.01 -0.05 -0.06];

x=x';y=y';

st_ = [0.1 0.7];

ft_ = fittype('a+b*log(x)' ,...

'dependent',,'independent',,...

'coefficients',);

cf_ = fit(x,y,ft_ ,'startpoint',st_)

plot(x,y,'o')

hold on,

plot(cf_,'fit',0.95)

3樓:

xdata=[0.06 0.15 0.24 0.32 0.45 0.55 0.67 0.76 0.85 0.95 1];

ydata=[0.625 0.455 0.

41 0.39 0.26 0.

15 0.03 0.01 -0.

01 -0.05 -0.06];

x0=[1;1];

fun=@(x,xdata) x(1)+x(2)*log(xdata);

x=lsqcurvefit(fun,x0,xdata,ydata);

xn=0:0.01:1;

scatter(xdata,ydata,'x');

hold on

plot(xn,x(1)+x(2)*log(xn),'g');

用matlab擬合一組資料,要求得出函式表示式

4樓:匿名使用者

^根據給定的資料bai,我們可以假定

du函式表示式為

y=b1+b2*x+b3*x^zhi2+b4*x^3+b5*x^4;

所以上述函dao數版可以用matlab的regress()多權元線性迴歸分析函式來擬合。實現過程如下:

a=[1.75,0.26;2.

25,0.32;2.5,0.

44;2.875,0.57;2.

686,0.50;2.563,0.

46];

x=a(:,1),y=a(:,2)

x=[ones(length(y),1),x,x.^2,x.^3,x.^4];

b=regress(y,x)

x1=linspace(1.5,3,50);

y1=b(1)+b(2)*x1+b(3)*x1.^2+b(4)*x1.^3+b(5)*x1.^4;

plot(x,y,'k*',x1,y1,'r-')

grid on

xlabel('x'),ylabel('y')

執行結果

5樓:昱婷漫步

從資料描bai

點圖來看,它可以用多項式du來擬合zhi

**:clear all;

clc;

close all;

x=[1.75,2.25,2.5,2.875,2.686,2.563];

y=[0.26,0.32,0.44,0.57,0.50,0.46];

plot(x,y,'r*')

[p,s]=polyfit(x,y,5)  %引數改為1就是線性擬dao合

y1=polyval(p,x)

hold on;

plot(x,y1,'b.')

五次版多項式擬合生成的權函式值與原資料基本重合:

五次多項式,從最高次項的係數到常數項,依次為p的值,所以:

y=-3.8276x^5+ 47.6583x^4 -235.8777x^3+579.6790x^2 -706.4245x+341.2326

6樓:匿名使用者

程式如下:

x=[1.75,2.25,2.5,2.875,2.686,2.563];

y=[0.26,0.32,0.44,0.57,0.50,0.46];

plot(x,y,'g.','markersize',25);%%%有這個是先描點,看出大致是什麼圖,這裡看到像二次曲線的回。答

hold on ;

p3=polyfit(x,y,2);

%%%%%%下面這個是擬合後的p3公式,式子為什麼是這個可以由上面擬合程式得出,放在一個圖裡面看效果

x2=0:0.5:4;

y2=0.1701*x2.^2-0.4965*x2+0.6027;

plot(x2,y2,'b');

7樓:匿名使用者

資料bai不多哈

clc;clear all

x=[1.75, 2.25, 2.5, 2.875, 2.686, 2.563];

y=[0.26,0.32,0.44,0.57,0.50,0.46];

p=polyfit(x,y,3);%四次

du擬合

zhiplot(x,y,'r--')

hold on

y1=polyval(p,x);%得出

dao擬合結

回果plot(x,y1,'b-')

xlabel('x')

ylabel('y')

legend('擬合前

答','擬合後')

8樓:科技數碼答疑

擬合函式表示式是咋麼的,是多項式還是指數,是1次函式還是二次函式??

用matlab 對一組資料進行擬合後,怎麼直接顯示擬合函式的影象?

9樓:

matlab是一抄個很強大的資料處理軟

襲件,是人們進行資料分析的得力助手。一般我們做社會調研或科學研究時,會得到很多實驗資料。當需要研究兩個變數之間的關係時,經常要用到曲線擬合。

曲線擬合不僅能給出擬合後的關係式,還能用圖形直觀的展現出變數之間的關係。 其實用matlab做曲線擬合很便捷,下面將以兩個變數(y=f(x))為例詳細介紹:

執行matlab軟體。

在工作空間中存入變數的實驗資料。具體如下:

可以直接用矩陣來存放資料,直接在命令視窗輸入x=[資料x1,資料x2,...,資料xn];

y=[資料y1,資料y2,...,資料yn];

當資料較多時,可以從excel,txt等檔案中匯入。

把資料存入工作空間後,在命令視窗中輸入cftool,回車執行。

在這個擬合工具視窗的左邊,選擇變數,即分別選擇x,y。

選擇擬合的曲線型別,一般是線性擬合,高斯曲線,平滑曲線等,根據需要選擇。

選擇完後會自動完成擬合,並且給出擬合函式表示式。

10樓:匿名使用者

你可以把步取去密一點,然後把擬合後的多項式用plot函式畫出來不就行了嗎?

給出一組資料,用matlab,在雙對數座標中擬合一條直線,顯示出擬合圖形,怎麼程式設計實現,急求各位高手!! 10

11樓:古槐婆娑

x1=[32 24 18 13.5];

y1=[675 1050 1580 2487];

p=polyfit(log(x1),log(y1),1)  %多項式擬合,p為多項式係數,最後的1為要擬合成的階數

x2=10:0.1:50;

y2=exp(polyval(p,log(x2)));

loglog(x1,y1,'*',x2,y2,'-')執行結果如下

12樓:匿名使用者

x=[32,24,18,13.5];

y=[675,1050,1580,2487] ;

x1=log10(x);

y1=log10(y);

p=polyfit(x1,y1,1);

yy=polyval(p,x1);

plot(x1,y1,'o')

hold on

plot(x1,yy,'-r')

xlabel('log(x)')

ylabel('log(y)')

如何用matlab製作散點圖並進行函式擬合 5

13樓:匿名使用者

你好!先把資料都存到行(列)向量x、y裡,畫散點圖:plot(x,y,『.』);

曲線擬合:ployfit(x,y,n),n為擬合的次數。

p o l y f i t ( x , y , n ) 找到次數為n的多項式係數,對於資料集合,

滿足差的平方和最小。

[ p , e ] = p o l y f i t ( x , y , n ) 返回同上的多項式p和矩陣e。多項式係數在向量p

中,矩陣e用在p o l y v a l函式中來計算誤差。

希望幫到你!歡迎追問

關於用matlab擬合一組資料,得到函式的表示式

14樓:匿名使用者

這個太難了,或者說是有太多的不確定性

因為連一個大概的函式形式都沒有給出來

也就是說可能性太多,這組資料可以擬合出無數多種函式結果

如果什麼函式形式都不給出的話,或者用多項式擬合吧

下面是嘗試用11次多項式擬合你的資料

x=[9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39];

y=[9,12,18,21,12,26,29,36,50,101,192,245,233,117,28,9];

p=polyfit(x,y,11);

xx=linspace(9,39,100);

yy=polyval(p,xx);

plot(x,y,'o');hold on

plot(xx,yy,'r');hold off

legend('資料','擬合','location','northwest');

title(poly2str(p,'x'));

如果是正態分佈

x=[9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39];

y=[9,12,18,21,12,26,29,36,50,101,192,245,233,117,28,9];

fun=@(p,x) p(1)*exp(-(x-p(2)).^2./2/p(3)^2);

p=nlinfit(x,y,fun,[250 32 10]);

xx=linspace(9,39,100);

yy=fun(p,xx);

plot(x,y,'o');hold on

plot(xx,yy,'r');hold off

legend('資料','擬合','location','northwest');

其中得到的p是有3個數的向量

函式形式是

p(1)*exp(-(x-p(2)).^2./2/p(3)^2)

p(1)是幅度,p(2)是中心橫座標,p(3)是標準差

matlab如何在一組陣列中隨機抽取數

s 1 3 5 7 9 陣列 n length s 陣列長度 i ceil rand 1,1 n s i 我的建議是先得到你陣列的大小a,然後產生個從1到a的隨機數,這專樣也能取出 屬來一個數。clc y 1,8,6,8,4,2,9,2,4,7,3,8,4,2,9,3,4,9,3 a size y,...

matlab輸入一組數,逆序輸出

有固定的函式的 flipud u 實現矩陣的上下翻轉 fliplr p 實現矩陣的左右翻轉 include define n 10 void main int s n int i,j,t printf 輸入 d個整數 n n for i 0,j n 1 it a i a i a j a j t pr...

matlab如何隨機生成一組範圍在0到1還服從正太分佈

matlab函式randn 產生正態分佈 的隨機數或矩陣的函式 randn 產生均值為0,方差 2 1,標準差 1的正態分佈的隨機數或矩陣的函式。用法 y randn n 返回一個n n的隨機項的矩陣。如果n不是個數量,將返回錯誤資訊。y randn m,n 或 y randn m n 返回一個m ...