1樓:百度文庫精選
內容來自使用者:beyond1215
matlab學習--多項式擬合(1)
(1)polyfit函式
matlab的polyfit函式用於多項式擬合,其語法為:
p = polyfit(x, y, k);
其中,x,y分別是橫縱座標向量,它們不僅元素個數相同,而且同為行向量或同為列向量。k為非負整數,是待擬合的多項式的最高次數。p是輸出項,為待擬合的多項式的係數向量(由高次到低次排列)。
例子:在matlab的命令視窗輸入以下**:
>> x = [1,2,3,4];
>> y = [3,5,7,9];
>> p = polyfit(x, y,1)
敲擊回車鍵,得到輸出結果:
p = 2.0000 1.0000
所以擬合得的函式就是:y = 2.0000x + 1.0000.
在進行多項式擬合時,必須注意的是,擬合的精度是有限的,一般而言,需要滿足以下條件:
記m為不重複的橫座標的數目,則擬合次數k <= m - 1,在此前提下儘量使用低次多項式進行擬合。
(2)polyval函式
polyval,顧名思義就是「多項式的值」,該函式的功能是將已知資料代入擬合得的多項式求值。語法格式:
y = polyval(p, x);
其中,p是已經擬合的多項式(比如說(1)中的p),x是自變數組成的向量,y是所求值組成的向量。
例子:在命令視窗輸入以下**:
>>clear
>> x = [1,2,3];
>> y = [3,5,7];
>> p = polyfit(x, y,1); %得到擬合多項式:y =2*x +1
>> t = [1,2,3,4,5];
>> s = polyval(p, t)
得到結果:
e = sum((y - polyval(p, x)).^2).
2樓:匿名使用者
看影象應該是正態分佈
可以用工具箱做cftool,選擇gaussian,
number of stems選擇4
得出f(x) = a1*exp(-((x-b1)/c1)^2) + a2*exp(-((x-b2)/c2)^2) + a3*exp(-((x-b3)/c3)^2) + a4*exp(-((x-b4)/c4)^2)
a1 = 4.258e+04 (2.817e+04, 5.7e+04)
b1 = 4.358e+04 (4.218e+04, 4.499e+04)
c1 = 1791 (189.8, 3392)
a2 = 4765 (-2297, 1.183e+04)
b2 = 5.37e+04 (5.104e+04, 5.637e+04)
c2 = 4062 (-3728, 1.185e+04)
a3 = 1.218e+04 (-4.117e+04, 6.553e+04)
b3 = 7.256e+04 (4.343e+04, 1.017e+05)
c3 = 2.602e+04 (-5.024e+04, 1.023e+05)
a4 = 1.25e+19 (-7.416e+23, 7.416e+23)
b4 = -4.532e+06 (-7.788e+09, 7.779e+09)
c4 = 7.715e+05 (-6.608e+08, 6.623e+08)
結果比較接近
3樓:匿名使用者
你使用matlab2014a的curve fitting工具擬合吧
如何使用matlab進行多項式擬合的計算? 255
怎麼用matlab進行多元多項式擬合
4樓:匿名使用者
例項1先看一個具體的例子,通過構造一系列離散的二維點集,然後用不同階次的多項式來擬合,比較哪個效果更好。最後說明多項式擬合在matlab中的用法。
2首先啟動matlab,選擇編輯器,再新建一個命令檔案。
3然後,在編輯器視窗中輸入本題的**。如下圖所示。並儲存,此處命名為dxsnh。
4需要注意的是,儲存檔案的位置要與當前搜尋路徑的位置保持一致。這可以通過右鍵編輯視窗的檔案,在彈出的下拉框中選擇。
5最後再命令列視窗處輸入dxsnh,並敲入鍵盤上的enter建。可以看出階數越高,曲線與擬合點擬合得越好。
end命令解釋
1通過上面的例子知道,matlab實現多項式擬合的關鍵命令是polyfit。
2該命令的格式如下
[p,s]=polyfit(x,y,n)
功能介紹:對於已知的資料x、y進行多項式擬合,擬合的多項式的階數為n,其中p為多項式的係數矩陣,s為**誤差估計值的矩陣。
5樓:範靖丙如曼
我教你個方法,希望你好好理解:c=
[ones(length(x1),
1)x1'
x2'];
temp
=pinv(c)*y';
ysim
=c*temp;
plot(y');
hold
on;plot(ysim,
'ro');
legend('y',
'ysim');
看看效果~~
temp裡面的三個值就是對應項的引數:y
=temp(1)
+temp(2)*x1
+temp(3)*x2;
6樓:馬克
x1=[1.5 1.5 2 2 2.5 2.5 2.5 2.5 3 3 3 3];
x2=[0.05 0.1 0.
15 0.2 0.05 0.
1 0.15 0.2 0.
05 0.1 0.15 0.
2];y=[1 0.99 0.98 0.
97 0.98 0.975 0.
97 0.965 0.975 0.
97 0.965 0.96];
cftool
先執行以上三個語句,接著會出來一個新圖,再在上面點「資料」,載入x1,x2,再點擬合,在出來的新圖裡選「新擬合」,再在選擇擬合型別為「高斯」,接下來點「應用就行了
7樓:匿名使用者
樓上的cftool很好用,也很方便
如果你非要用程式做。。。。。。。
請先把重複的資料去掉,否則沒法擬合或者出錯誤不知道樓主這組資料**來的,我以前也有過類似的問題,最後直接放棄啦摟著可以看看,對於一個x值有兩個y值,甚至多達4個,你可以大致描個點試試,對於這樣的資料點基本擬合不出合適的曲線,因為有很多曲線合適也不合適
所以,樓主可以換組資料
這樣的資料,真的沒法擬合
當然,小弟能力有限,沒準有大蝦可以解決
matlab如何做線性擬合
8樓:一棵無所不知的小白菜
方法一1、最常用的是多項式擬合,採用polyfit函式,在命令視窗輸入自變數x和因變數y。
2、以二次多項式擬合為例,輸入p=polyfit(x,y,2),如果想擬合更高次的多項式,更換括號內數字即可。
方法二2、輸入自變數x和因變數y。
3、選擇擬合方式,有多項式擬合polynomial,高斯擬合gaussian,冪指數擬合power等等,本次以多項式擬合為例。
4、通過資料計算,可以獲得曲線引數(曲線函式中的各項係數),從而實現曲線擬合。
9樓:匿名使用者
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
10樓:趣味生活大講堂
把x,y資料輸入matlab中,然後輸入cftool1 在介面裡點data,輸入x和y的值
linear model poly1:
f(x) = p1*x + p2
coefficients (with 95% confidence bounds):
p1 = -1325 (-1429, -1222)p2 = 6.788 (-69.34, 82.92)goodness of fit:
sse: 3.082e+004
r-square: 0.9879
adjusted r-square: 0.9867rmse: 55.51
這是執行結果。
matlab中的polyfit用做擬合,如何確定多項式的階數n呢? 即polyfit(x,y,n)中的n。謝謝!
11樓:匿名使用者
這個階數是不能事先確定的。一般通過多試幾次,然後取一條最好的。
12樓:匿名使用者
一般來講,階數越高,擬合的曲線越貼近於實際測量點,但階數過高,計算量會增大。
用matlab進行曲線擬合時,怎麼確定要擬合的多項式次數?比如有3000個點,那麼多項式的次數取多少合適呢? 5
13樓:匿名使用者
最好是先看看資料的規律,從低次到高次不斷的試驗,當前幾項係數為零時,就可以停止了,一般不會超過6次的,最好能傳上資料來看看
已知4個點,請問如何用matlab進行3次多項式擬合成曲線??**等
14樓:
x=[220 280 340 400];
y=[101 70.5 51 24];
x0=200:1:400;
f=polyfit(x,y,3);
f1=polyval(f,x0);
plot(x,y,'-r',x0,f1,'-b')希望會幫你
15樓:
x=[220 280 340 400];
y=[101 70.5 51 24];
polyfit(y,x,3)
ans =
0.0005 -0.0951 2.5875 385.3642
ans為3次多項式係數
用matlab系統命令,做多項式次數為3,5,6的擬合曲線,做圖。
16樓:匿名使用者
直接複製到命令視窗就可以執行。可以出圖。
程式沒有任何錯誤。
如何進行曲線擬合,用origin
擬合只能是線性擬合和多項式擬合,你這影象複雜的很,估計擬合效果不行,這也是沒辦法的事呀,不過你可以試試指數擬合,就是把結果取對數 取ln值 再進行多項式或線性擬合,看看行不行。有時確實擬合不出來也沒辦法,因為有點函式很難能用擬合工具做出來。要不然就不用搞數學建模了。 有幾個關鍵步驟。1,選擇要擬合的...
matlab傅立葉曲線擬合,matlab擬合工具箱用傅立葉逼近對某條曲線擬合???
以下 在7.1版以上均可執行。將以下 儲存為m檔案 function yy zzz700createfit x,y,n xdata x ydata y set up fittype and options.ft fittype fourier num2str n opts fitoptions ft...
用VC 編曲線擬合程式,用VC 編一個曲線擬合程式
這個功能不難實現啊,用win32 sdk編寫一個簡單的視窗就可以,預設的win32應用程式,然後在wm create訊息事件中繪製5個點,響應wm mousemove訊息,實時設定選中的點的座標,響應wm paint訊息,呼叫函式drawbezier函式,不過貌似這個函式是根據4個點來畫的,也就是你...