插值與擬合

2021-08-07 18:04:38 字數 4870 閱讀 7953

插值:插值是相對擬合略微麻煩一點點:

插值的函式 interp2,這個大家經常見,關於interp2的用法網上介紹的很多。這裡有乙個需要注意的事項就是:以下為例:

x0=[1200:400:4000];

y0=[1200:400:3600];

z0=[1130 1250 1280 1230 1040 900 500 700;

1320 1450 1420 1400 1300 700 900 850;

1390 1500 1500 1400 900 1100 1060 950;

1500 1200 1100 1350 1450 1200 1150 1010;

1500 1200 1100 1550 1600 1550 1180 1070;

1500 1550 1600 1550 1600 1600 1600 1550;

1480 1500 1550 1510 1430 1300 1200 980];

[xi,yi]=meshgrid(1200:10:4000,1200:10:3600);%網格化處理,這一步很多人會忘掉,往往會輸入為:x1=1200:10:4000;y1=1200:10:3600的形式注意

zil=interp2(x0,y0,z0,xi,yi,』linear』);%使用linear進行插值,可以替換,更多的可以在matlab中使用help interp2

mesh(xi,yi,zil)

下面簡單介紹meshgrid intrerp griddate

重要,需要了解,尤其第四條(最後一頁)interp2與griddata的區別:

1. meshgrid

meshgrid用於從陣列a和b產生網格。生成的網格矩陣a和b大小是相同的。它也可以是更高維的。

[a,b]=meshgrid(a,b)

生成size(b)xsize(a)大小的矩陣a和b。它相當於a從一行重複增加到size(b)行,把b轉置成一列再重複增加到size(a)列。因此命令等效於:

a=ones(size(b))*a;

b=b』*ones(size(a))

如下所示:

a=[1:2]

a =

1 2

b=[3:5]

b =

3 4 5

[a,b]=meshgrid(a,b)

a =

1 2

1 2

1 2

b =

3 3

4 4

5 5

[b,a]=meshgrid(b,a)

b =

3 4 5

3 4 5

a =

1 1 1

2 2 2

interp

interp1——一維資料插值函式

一維資料插值。該函式對資料點之間計算內插值,它找出一元函式f(x)在中間點的數值,其中函式表示式由所給資料決定。

yi=interp1(x,y,xi):返回插值向量yi,每一元素對應於參量xi,同時由向量x與y的內插值決定。參量x 指定資料y的點。若y為一矩陣,則按y的每列計算。yi是階數為length(xi)*size(y,2)的輸出矩陣。

yi=interp1(y,xi):假定x=1:n,其中n為向量y的長度,或者為矩陣y的行數。

yi=interp1(x,y,xi,method):用指定的演算法計算插值。nearest為最近鄰點插值,直接完成計算;linear為線性插值(預設方式),直接完成計算;spline為三次樣條函式插值。

yi=interp1(x,y,xi,method,』extrap』):對於超出x範圍的xi中的分量將執行特殊的外插值法extrap。

yi=interp1(x,y,xi,method,extrapval):確定超出x範圍的xi中的分量的外插值extrapval,其值通常取nan或0。

interp2函式——二維資料內插值

完成二維的資料插值。

zi=interp2(x,y,z,xi,yi):返回矩陣zi,其元素包含對應於參量xi與yi(可以是向量、或同型矩陣)的元素。使用者可以輸入行向量和列向量xi與yi,此時,輸出向量zi與矩陣meshgrid(xi,yi)是同型的。同時取決於由輸入矩陣x、y與z確定的二維函式z=f(x,y)。

zi=interp2(z,xi,yi):預設地,x=1:n、y=1:m,其中[m,n]=size(z)。再按第一種情形進行計算。

zi=interp2(z,n):作n次遞迴計算,在z的每兩個元素之間插入它們的二維插值,這樣,z的階數將不斷增加。interp2(z)等價於interp2(z,1)。

zi=interp2(x,y,z,xi,yi,method):用指定的演算法method計算二維插值。linear為雙線性插值演算法(預設演算法),nearest為最臨近插值,spline為三次樣條插值,cubic為雙三次插值。

interp3函式——三維資料插值

完成三維資料插值。

vi=interp3(x,y,z,v,xi,yi,zi):求出由參量x,y,z決定的三元函式v=v(x,y,z)在點(xi,yi,zi)的值。參量xi,yi,zi是同型陣列或向量。若向量參量xi,yi,zi是不同長度、不同方向(行或列)的向量,這時輸出參量vi與y1,y2,y3為同型矩陣。y1,y2,y3為用函式meshgrid(xi,yi,zi)生成的同型陣列。若插值點(xi,yi,zi)中有位於點(x,y,z)之外的點,則相應地返回特殊變數值nan。

vi=interp3(v,xi,yi,zi):預設地,x=1:n,y=1:m,z=1:p,其中,[m,n,p]=size(v),再按上面的情形計算。

vi=interp3(v,n):作n次遞迴計算,在v的每兩個元素之間插入它們的三維插值。這樣,v的階數將不斷增加。interp3(v)等價於interp3(v,1)。

vi=interp3(…,method):用指定的演算法method做插值計算。linear為線性插值(預設演算法),cubic為三次插值,spline為三次樣條插值,nearest為最鄰近插值。

interpn函式——n維資料插值

完成n維資料插值。

vi=interpn(x1,x2,…,xn,v,y1,y2,..,yn):返回由參量x1,x2,..,xn,v確定的n元函式v=v(x1,x2,..,xn)在點(y1,y2,…,yn)處的插值。參量y1,y2,…,yn是同型的矩陣或向量。若y1,y2,…,yn是向量,則可以是不同長度,不同方向(行或列)的向量。

vi=interpn(v,y1,y2,…,yn):預設地,x1=1:size(v,1),x2=1:size(v,2),…,xn=1:size(v,n),再按上面的情形計算。

vi=interpn(v,ntimes):作ntimes遞迴計算,在v的每兩個元素之間插入它們的n維插值。這樣,v的階數將不斷增加。interpn(v)等價於interpn(v,1)。

griddata

功能 資料格點

格式 (1)zi = griddata(x,y,z,xi,yi)

用二元函式z=f(x,y)的曲面擬合有不規則的資料向量x,y,z。griddata 將返回曲面z 在點(xi,yi)處的插值。曲面總是經過這些資料點(x,y,z)的。輸入參量(xi,yi)通常是規則的格點(像用命令meshgrid 生成的一樣)。xi 可以是一行向量,這時xi 指定一有常數列向量的矩陣。類似地,yi 可以是一列向量,它指定一有常數行向量的矩陣。

(2)[xi,yi,zi] = griddata(x,y,z,xi,yi)

返回的矩陣zi 含義同上,同時,返回的矩陣xi,yi 是由行向量xi 與列向量yi 用命令meshgrid 生成的。

(3)[xi,yi,zi] = griddata(…….,method)

用指定的演算法method 計算:

『linear』:基於三角形的線性插值(預設演算法);

『cubic』: 基於三角形的三次插值;

『nearest』:最鄰近插值法;

『v4』:matlab 4 中的griddata 演算法。

matlab二維插值–interp2與griddata

二者均是常用的二維差值方法,兩者的區別是,interp2的插值資料必須是矩形域,即已知資料點(x,y)組成規則的矩陣,或稱之為柵格,可使用meshgid生成。而griddata函式的已知資料點(x,y)不要求規則排列,特別是對試驗中隨機沒有規律採取的資料進行插值具有很好的效果。griddata(x,y,xi,yi,』v4』) v4是一種插值演算法,沒有具體的名字,原文稱為「matlab 4 griddata method」,是一種很圓滑的差值演算法,效果不錯。x和y提供的已知資料點,xi和yi是需要插值的資料點,一般使用meshgrid生成,當然也可以其他資料,但是那樣繪圖的時候就比較麻煩,不能使用mesh等,只能使用trimesh。

示例如下:

a=[

3 3 1.5300

3 27 0.4210

5 17 0.5980

9 9 0.5900

13 25 0.4470

15 15 1

17 5 0.3830

21 21 0.3100

25 13 0.2830

27 3 0.2820

27 27 0.1200

]; x=a(:,1);

y=a(:,2);

z=a(:,3);

xtemp=linspace(min(x),max(x),100);

ytemp=linspace(min(y),max(y),100);

[x,y]=meshgrid(xtemp,ytemp);

z=griddata(x,y,z,x,y,』v4』);

surf(x,y,z)

shading interp

matlab插值與擬合

插值 兩個變數間的關係可以通過函式來表示,若x為自變數,y為因變數,則函式關係可描述為y f x 在大多數問題中,函式關係式y f x 未知,人們通常採用逼近的方法處理 取得一組資料點 xi,yi 然後構造乙個簡單的函式p x 作為函式y f x 的近似表示式,即y f x p x 若滿足p xi ...

數學建模 插值與擬合

插值與擬合 一 插值方法 1.分段線性插值 將兩個點用線連起來形成的一條折線就是分段線性插值函式。in x 其滿足in xi yi,且其在每個相鄰區間 xi,xi 1 上是線性函式。用in x 計算插值時,只用到x左右兩個節點,計算量與節點個數無關。但節點個數越多,插值誤差越小。2.拉格朗日插值多項...

插值和擬合

一維插值 y interp1 x0,y0,x,method x0單調的 method 預設為線性插值 nearest 最近項插值 linear 線性插值 spline 立方樣條插值 cubic 立方插值 三次樣條插值 光滑,它的曲率也是連續的 pp csape x0,y0,conds conds是邊...