MATLAB資料插值和曲線擬合

2021-10-23 17:24:13 字數 3769 閱讀 9162

在工程測量和科學實驗中,所得到的資料通常是離散的。

如果要得到這些離散點以外的其他點的數值,就需要根據這些已知資料進行插值。

根據被插值函式的自變數個數,插值問題分為一維插值、二維插值和多維插值等;根據是用分段直線、多項式或樣條函式來作為插值函式,插值問題又分為線性插值、多項式插值和樣條插值等。

如果被插值函式是乙個單變數函式,則資料插值問題稱為一維插值。一維插值採用的方法有線性方法、最近方法、3次多項式和3次樣條插值。

函式interp1:插值函式

y1=interp1(x,y,x1,method)

根據x、y的值,計算函式在x1處的值。其中,x、y是兩個等長的已知向量,分別描述取樣點和取樣值。若同乙個取樣點有多種取樣值,則y可以為矩陣,y的每一列對應一組取樣。x1是乙個向量或標量,描述欲插值的點,y1是乙個與x1等長的插值結果。

引數:method:用於指定插值方法,允許的取值有:

『linear』:線性插值。線性插值是預設的插值方法,它是把與插值點靠近的兩個資料點用直線連線,然後在直線上選取對應插值點的資料。

『nearest』:最近點插值。根據插值點與已知資料點的遠近程度進行插值。插值點優先選擇較近的資料點進行插值操作。

『pchip』:分段3次埃爾公尺特插值。matlab中有乙個專門的3次hermite插值函式pchip(x,y,x1),其功能及使用方法與函式interp1(x,y,x1,『pchip』)相同。

『spline』:3次樣條插值。所謂3次樣條插值,是指在每個分段(子區間)內構造乙個3次多項式,使其插值函式除滿足插值條件外,還要求在各節點處具有光滑的條件。matlab中有乙個專門的3次樣條插值函式spline(x,y,x1),其功能及使用方法與函式interp1(x,y,x1,『spline』)相同。

例:給出以下概率積分的資料表如表6-1所示,用不同的插值方法計算f(0.472)

>> x=0.46:0.01:0.49;         %給出x和f(x)

>> f=[0.4846555,0.4937542,0.5027498,0.5116683];

>> format long

>> interp1(x,f,0.472) %用預設方法,即線性插值計算f(0.472)

ans = 0.495553320000000

>> interp1(x,f,0.472,'nearest') %用最近點插值計算f(0.472)

ans = 0.493754200000000

>> interp1(x,f,0.472,'pchip') %用3次hermite插值計算f(0.472)

ans = 0.495561119712056

>> interp1(x,f,0.472,'spline') %用3次樣條插值計算f(0.472)

ans = 0.495560736000000

format short

例:某檢測引數f隨時間t的取樣結果如表6-2,用資料插值法計算t=2,12,22,32,42,52時的f值

>> f1=interp1(t,f,x) %用線性插值方法插值

>> f2=interp1(t,f,x,'nearest') %用最近點插值方法插值

>> f3=interp1(t,f,x,'pchip') %用3次hermite插值方法插值

>> f4=interp1(t,f,x,'spline') %用3次樣條插值方法插值

當函式依賴於兩個自變數變化時,其取樣點就應該是乙個由這兩個引數組成的乙個平面區域,插值函式也是乙個二維函式。對依賴於兩個引數的函式進行插值的問題稱為二維插值問題。同樣,在matlab中,提供了解決二維插值問題的函式interp2,其呼叫格式為:

z1=interp2(x,y,z,x1,y1,method)

其中,x、y是兩個向量,分別描述兩個引數的取樣點,z是與引數取樣點對應的函式值,x1、y1是兩個向量或標量,描述欲插值的點。z1是根據相應的插值方法得到的插值結果。 method的取值與一維插值函式相同。x、y、z也可以是矩陣形式。

例:設z=x2+y2,對z函式在[0,1]×[0,2]區域內進行插值。

>> x=0:0.1:1;y=0:0.2:2;

>> [x,y]=meshgrid(x,y); %產生自變數網格座標

>> z=x.^2+y.^2; %求對應的函式值

>> interp2(x,y,z,0.5,0.5) %在(0.5,0.5)點插值

ans =

0.5100

>> interp2(x,y,z,[0.5 0.6],0.4) %在(0.5,0.4)點和(0.6,0.4)點插值

ans =

0.4100 0.5200

>> interp2(x,y,z,[0.5 0.6],[0.4 0.5])%在(0.5,0.4)點和(0.6,0.5)點插值

ans =

0.4100 0.6200

%下一命令在(0.5,0.4),(0.6,0.4),(0.5,0.5)和(0.6,0.5)各點插值

>> interp2(x,y,z,[0.5 0.6]',[0.4 0.5])

ans =

0.4100 0.5200

0.5100 0.6200

在matlab中,用polyfit函式來求得最小二乘擬合多項式的係數,再用polyval函式按所得的多項式計算所給出的點上的函式近似值。

polyfit函式的呼叫格式為:

p=polyfit(x,y,m)

[p,s]=polyfit(x,y,m)

[p,s,mu]=polyfit(x,y,m)

函式根據取樣點x和取樣點函式值y,產生乙個m次多項式p及其在取樣點的誤差向量s。其中,x、y是兩個等長的向量,p是乙個長度為m+1的向量,p的元素為多項式係數。mu是乙個二元向量,mu(1)是mean(x),而mu(2)是std(x)。可以用polyval函式按所得的多項式計算x各點上多項式的值。

例:用乙個3次多項式在區間[0,2π]內逼近函式。

在給定區間上,均勻地選擇50個取樣點,並計算取樣點的函式值,然後利用3次多項式逼近。

>> x=linspace(0,2*pi,50);

>> y=sin(x);

>> p=polyfit(x,y,3) %得到3次多項式的係數和誤差

p = 0.0912 -0.8596 1.8527 -0.1649

Matlab學習 6 資料插值 曲線擬合(精)

一般地,從各種試驗得來的資料總是有一定的數量,而利用插值技術能夠從有限的資料中獲取系統整體的狀態,因此,資料插值在各行各業,特別是訊號處理領域內有著廣泛的應用。matlab提供了常用的各種資料插值計算的函式 注 較常用的就是進行基本插值的interp系列函式。其中interp1和interp1q函式...

matlab中的曲線擬合與插值

曲線擬合與插值 在大量的應用領域中,人們經常面臨用乙個解析函式描述資料 通常是測量值 的任務。對這個問題有兩種方法。在插值法裡,資料假定是正確的,要求以某種方法描述資料點之間所發生的情況。這種方法在下一節討論。這裡討論的方法是曲線擬合或回歸。人們設法找出某條光滑曲線,它最佳地擬合資料,但不必要經過任...

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