問題:已知三組資料,就是直角座標系中的x,y,z的三個陣列,要求在matlab中擬合出這條空間曲線。 帖子源資料:
a=
[22.77,17.13,14.37,12.98,12.34,12.12,12.11,12.18,12.27,12.32,12.32,12.27,12.18,12.11,12.12,12.34,12.98,14.37,17.13,22.77];關於這個問題在論壇裡被提及了好多次,貌似還沒有最佳答案。在matlab中找了很多函式去實現,都不是很理想,也有人提到1st0pt曲線擬合軟體,下面提供一種可行的解決方案:b=[23.75,21.25,18.75,16.25,13.75,11.25,8.75,6.25,3.75,1.25,-1.25,-3.75,-6.25,-8.75,-11.25,-13.25,-16.25,-18.75,-21.25,-23.75];
c=[0,3.34,6.59,9.44,11.82,13.74,15.21,16.29,16.99,17.33,17.33,16.99,16.29,15.21,13.74,11.82,9.44,6.59,3.34,0];
step1:三組資料匯入1stopt(這是乙個1分鐘入手軟體,即開即用,哈哈),程式-快速三維公式擬合,優化演算法麥夸特法(levenberg-marquardt, lm)。選取相關係數為1的函式結構,同時還會生成多項式係數p。輸出結果:
function: z = p1+p2x+p3x2+p4*y+p5*y2+p6*y^3
algorithms: 麥夸特法(levenberg-marquardt) + 通用全域性優化法
p1 21.414214338773
p2 -0.472199954302881
p3 0.0119553684329481
p4 0.00491434397562593
p5 -0.0298899195279345
p6 -9.69888338793035e-6
step2:在matlab中係數p繼續做優化處理, pp = lsqcurvefit(@fun,x0,xdata,ydata)。將上述p作為lsqcurvefit函式的x0**值,fun為z方程式。求得優化後的係數pp。具體 lsqcurvefit見help文件
原始曲線和擬合曲線
Matlab給散點加上圓滑曲線
matlab給散點加上圓滑曲線 clc,clear,close all x 50,100,200,500,1000,2000,5000,10000,20000 y 2.64,2.21,1.38,0.564,0.263,0.396,1.07,1.98,3.14 xx 50 0.01 20000 插值 ...
MATLAB 曲線擬合
x0.1 0.20.15 0.0 0.2 0.3y 0.95 0.84 0.86 1.06 1.50 0.72 函式功能多項式的擬合運算 呼叫方法polyfit x,y,n x為橫座標,y為縱座標,n為擬合階數。例子x 0 0.1 2.5 1y erf x p polyfit x,y,6 p 0.0...
matlab 曲線擬合
在matlab中經常需要對資料進行曲線擬合,如最常見的多項式擬合,一般可以通過cftool呼叫曲線擬合工具 curve fit tool 通過圖形介面可以很方便的進行曲線擬合,但是有些時候也會遇到不方便用圖形工具。因此這裡簡單的記下兩種常用的擬合方法。1 多項式擬合 polyfit和polyval ...