1樓:
matlab是一抄個很強大的資料處理軟
襲件,是人們進行資料分析的得力助手。一般我們做社會調研或科學研究時,會得到很多實驗資料。當需要研究兩個變數之間的關係時,經常要用到曲線擬合。
曲線擬合不僅能給出擬合後的關係式,還能用圖形直觀的展現出變數之間的關係。 其實用matlab做曲線擬合很便捷,下面將以兩個變數(y=f(x))為例詳細介紹:
執行matlab軟體。
在工作空間中存入變數的實驗資料。具體如下:
可以直接用矩陣來存放資料,直接在命令視窗輸入x=[資料x1,資料x2,...,資料xn];
y=[資料y1,資料y2,...,資料yn];
當資料較多時,可以從excel,txt等檔案中匯入。
把資料存入工作空間後,在命令視窗中輸入cftool,回車執行。
在這個擬合工具視窗的左邊,選擇變數,即分別選擇x,y。
選擇擬合的曲線型別,一般是線性擬合,高斯曲線,平滑曲線等,根據需要選擇。
選擇完後會自動完成擬合,並且給出擬合函式表示式。
2樓:匿名使用者
你可以把步取去密一點,然後把擬合後的多項式用plot函式畫出來不就行了嗎?
用matlab擬合一組資料,要求得出函式表示式
3樓:匿名使用者
^根據給定的資料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')
執行結果
4樓:昱婷漫步
從資料描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
5樓:匿名使用者
程式如下:
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');
6樓:匿名使用者
資料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('擬合前
答','擬合後')
7樓:科技數碼答疑
擬合函式表示式是咋麼的,是多項式還是指數,是1次函式還是二次函式??
請教如何用matlab求擬合的公式,就是我知道一組資料,用matlab擬合曲線後,怎麼知道這個曲線的方程
8樓:匿名使用者
使用polyfit函式就可以擬合曲線了
比如給出的座標分別是x和y,則有
p=polyfit(x,y,3)
這樣得到的p就是多項式的係數。這裡的3指的是三次多項式!
祝你學習愉快!
關於用matlab擬合一組資料,得到函式的表示式
9樓:匿名使用者
這個太難了,或者說是有太多的不確定性
因為連乙個大概的函式形式都沒有給出來
也就是說可能性太多,這組資料可以擬合出無數多種函式結果
如果什麼函式形式都不給出的話,或者用多項式擬合吧
下面是嘗試用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)是標準差
10樓:
如果沒有模型的話只能畫出圖來看它像什麼。。。要不就乙個個模型去試驗
用matlab或spss將一組資料怎麼擬合成多元多項式
程式 clear clc x1 2187.45 2482.49 2969.52 3585.72 4282.14 4950.91 5813.56 6801.57 7806.53 8201.23 9510.91 x2 701.24 724.57 746.62 778.27 800.80 827.75 8...
matlab中如何對一組資料進行fft變換後得到頻譜圖
1 直接對其使用來ceil函式,源 可以向上取整 即大於等於給定數bai據的最du小整數。2 使用zhifloor函式可以進行向下取dao整。如圖,將矩陣a中的每個元素取小於等於該元素的最大整數。3 使用fix函式則可以去除小數部分。對於大於0的元素相當於floor,對於小於0的元素相當於ceil。...
Matlab對於一組已有資料的多種排列組合
a 1 10 十個數,可以是其他不同的十個r zeros size a 每個位置出現的次數,初始化全部為零 for i 1 100 b a randperm length a b就是a中10個數的隨機順序排列 ind find b 1 找到1的位置,也可以是其他a中的數字r ind r ind 1 ...