MATLAB曲線擬合函式

2021-09-12 10:19:00 字數 2572 閱讀 7468

一、多項式擬合

clear all

clcx = [0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8];

y = [1 2 3 5 6 7 6 5 4 1];

p5 = polyfit(x,y,5); % 5 階多項式擬合

y5 = polyval(p5,x);

p5 = vpa(poly2sym(p5),5) %顯示 5 階多項式

p9 = polyfit(x,y,9); % 9 階多項式

y9 = polyval(p9,x);

figure; %畫圖

plot(x,y,'bo');

hold on;

plot(x,y5,'r:');

plot(x,y9,'g--');

legend('原始資料','5 階多項式擬合','9 階多項式擬合');

xlabel('x');

xlabel('y');

二、加權最小方差(wls)擬合原理及例項

function [th,err,yi] = polyfits(x,y,n,xi,r)

% x,y:資料點系列

% n:多項式擬合的系統

% r:加權係數的逆矩陣

m = length(x);

x = x(:);

y = y(:);

% 判斷呼叫函式的格式

if nargin == 4

% 當呼叫的格式為 (x,y,n,r)

if length(xi) == m

r = xi;

xi = x;

% 當呼叫的格式為(x,y,n,xi)

else r = 1;

end;

% 當呼叫格式為(x,y,n)

elseif nargin == 3

xi = x;

r = 1;

end% 求解係數矩陣

a(:,n+1) = ones(m,1);

for n = n:-1:1

a(:,n) = a(:,n+1).*x;

endif length(r) == m

for m =1:m

a(m,:) = a(m,:)/r(m);

y(m) = y(m)/r(m);

endend

% 計算擬合係數

th = (a\y)';

ye = polyval(th,x);

err = norm(y-ye)/norm(y);

yi = polyval(th,xi);

clear all

clcx = [-3:1:3]';

y = [1.1650 0.0751 -0.6965 0.0591 0.6268 0.3516 1.6961]';

[x,i] = sort(x);

y = y(i);

xi = min(x) + [0:100]/100*(max(x) - min(x));

for i = 1:4

n = 2*i-1;

[th,err,yi] = polyfits(x,y,n,xi);

subplot(2,2,i)

plot(x,y,'o')

hold on

plot(xi,yi,'-')

grid on

end

三、非線性曲線擬合

已知輸入向量 xdata 和輸出向量 ydata,且長度都是 n,使用最小二乘非線性擬合函式:ydata(i) = x(1)·xdata(i)^2+x(2)·\sin(xdata(i))+ x(3)·xdata(i)^3

根據題意可知,目標函式為:\(min_x \frac\displaystyle^n}(f(x,xdata_i)-ydata_i)^2\)

其中:f(x,xdata) = x(1)·xdata^2+x(2)\sin(xdata)+x(3)·xdata^3

初始解向量定位 x0 = [0.3,0.4,0.1]

首先建立擬合函式檔案 ex1024.m

function f = ex1024(x,xdata)

f = x(1)*xdata.^2 + x(2)*sin(xdata) + x(3)*xdata.^3;

clear all

clcxdata = [3.6 7.7 9.3 4.1 8.6 2.8 1.3 7.9 10.0 5.4];

ydata = [16.5 150.6 263.1 24.7 208.5 9.9 2.7 163.9 325.0 54.3];

x0 = [10,10,10];

[x,resnorm] = lsqcurvefit(@ex1024,x0,xdata,ydata)

posted @

2018-08-12 20:02

nikki_o3o 閱讀(

...)

編輯收藏

MATLAB曲線擬合函式

一 多項式擬合 clear all clcx 0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8 y 1 2 3 5 6 7 6 5 4 1 p5 polyfit x,y,5 5 階多項式擬合 y5 polyval p5,x p5 vpa poly2sym p5 5 顯示...

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 ...