Matlab學以致用 曲線擬合

2022-07-12 13:24:08 字數 1967 閱讀 9019

使用matlab自帶的polyfit函式,可以很方便地根據現有樣本資料進行多項式曲線擬合,為了有直觀感受,先上例程,如下所示:

1 x = -5:0.1:5;                           %樣本資料x座標

2 y = 3*x.^2 + 6*x + 5 + randn(size(x)); %樣本資料y座標,新增隨機雜訊

34 p = polyfit(x, y, 2); % 使用自帶函式進行資料擬合,擬合的多項式維數n=2

5 yy = polyval(p, x); %生成擬合資料

67 figure, plot(x, y, '

.'); %顯示原始資料

8 xlabel('

x'), ylabel('

y'); %座標軸

9 hold on, plot(x, yy, '

r', '

linewidth

', 2); %顯示擬合資料

10 legend('

raw data

', '

fitting line

'); % 圖例

執行結果:

函式說明:

p = polyfit(x,y,n) returns the coefficients for a polynomial p(x) of degree n that is a best fit (in a least-squares sense) for the data in y. the coefficients in p are in descending powers, and the length of p is n+1

即,polyfit(x,y,n) 返回對應於樣本資料y的n維多項式p(x)的係數(基於最小二乘法)。該係數按照降冪順序排列,個數為 n+1

基本原理:給定一組資料[x1,x2,…,xn]和[y1,y2,…yn],已知x和y成基本線性關係,即存在一條最佳擬合直線y = kx + b,對此,同樣可以基於最小二乘法來求出係數k和b。此時,呼叫polyfit(x,y,n)時,應取n=1,即把直線擬合看作是一階多項式的擬合,在此不再贅述。

另外,還可以使用基於矩陣除法的直線擬合方法,基本原理如下:

例程:

1 %基於矩陣除法的直線擬合

2 x = [0.5

11.5

22.5

3];

3 y = [1.75

2.45

3.81

4.88

8.6];

45 n =length(x);

6 x = reshape(x,n,1); %生成列向量

7 y = reshape(y,n,1

);

8 a = [x,ones(n,1)]; %連線矩接a

910 yy = a \ y; % 左除,相當於inv(a)*y

1112 k = yy(1); %得到k

13 b = yy(2); %得到b

1415 yy = polyval([k, b], x); %生成擬合資料

16figure,

17 plot(x, y, '*'

);18 hold on, plot(x, yy, '

r'); % 顯示擬合曲線

執行結果:

C 學以致用(2)

如果第乙個運算物件是負數,那麼求模結果為負數 如果第乙個運算物件是正數,那麼求模結果也是正數。printf d d n 11 5,11 5 printf d d n 11 5,11 5 printf d d n 11 5,11 5 printf d d n 11 5,11 5 程式執行結果 2 1 ...

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