導航:首頁 > 源碼編譯 > 曲面插值演算法

曲面插值演算法

發布時間:2022-12-15 23:03:03

『壹』 Akima方法插值原理是什麼,越詳細越好,或者有鏈接解釋也行

Akima插值既有一維插值(曲線插值),也有二維插值(曲面插值),不知你指的是哪一種?

對於一維插值,參考以下網頁:
http://netclass.csu.e.cn/JPKC2007/CSU/02GPSjpkch/jiao-an/9.5.htm

對於二維插值,參考以下網頁:
http://netcourse.cug.e.cn:7310/cugThird/MapGIS-theory/pagemain/CLASS/COURSE/10-3-3.HTM
Akima樣條插值法是用雙五次多項式和連續的一階偏導數進行光滑曲面擬合和內插的方法,該方法將平面分割為三角形格網,各三角形以三個數據點在平面上的投影點為頂點。
根據三個頂點的場值、一階偏導數和二階偏導數值,可得到18個不相關的條件,三角形三條邊兩側的一階偏導數相等給出另外三個邊界條件,這樣可求出方程的21個系數。

『貳』 散亂數據直接插值曲面

5.2.1.1 基本方法

當地質界面的形態比較簡單時,可以採用散亂數據直接插值形成地質界面。散亂數據直接插值方法是模擬連續型單值界面的主要方法,同時也是模擬非連續地質界面的基礎。該方法首先將界面邊界在給定參考面上的投影區域剖分成三角網,再根據采樣點數據對三角網的結點進行插值計算形成地質界面,包括3個基本過程:①確定參考坐標系與參考面;②剖分投影區域;③插值運算確定網格結點坐標。

5.2.1.1.1 確定參考坐標系

盡管地質界面的真實幾何形態不因參考坐標系的不同而發生改變,但是,坐標系的選擇對由散亂點插值形成的三角曲面的范圍與網格質量有一定的影響,進而影響插值形成的曲面的幾何形態。坐標系不同,待求曲面在參考面上的投影不同,所得到的投影區域的平面網格也不同,從而影響網格質量。

如圖5.3所示,相同的擬模擬曲面邊界在兩個參考面上的投影不同,在XOY面上的投影面積較大,在YOZ面上的投影面積較小(圖5.3(a))。分別對兩個投影區域進行三角剖分後,均得到了較優化的平面網格(圖5.3(b))。利用相同的原始采樣數據分別對兩個投影區域的三角網格進行插值,得到兩張曲面,其中圖5.3(c)中曲面A由XOY面上投影區域插值形成,而圖5.3(d)中曲面B由YOZ面上投影區域插值形成。由於曲面A與B是模擬相同地質界面,因此,它們應該是非常接近的。但是,由於參考面不同,曲面A與B存在明顯的區別:①曲面B上的部分三角網格被拉長,質量較差,而曲面A的網格質量相對較好(圖5.3(c));②曲面A與B不重合,而且,A與B的形狀也不同。

因此,坐標系的選擇應特別謹慎。在沒有特殊要求的情況下,建模時應根據各種界面的位置與幾何形態選擇統一的坐標系。另外,界面的參考面最好為統一坐標系的XOY、XOZ或YOZ面,並且,對於某一界面而言,應保證其邊界在投影面上的投影所圍面積盡可能大。

三維地質建模方法及程序實現

『叄』 matlab中的插值函數 griddata的具體原理是什麼呢可否大概講解一下!!!

griddata 調用方法:
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
[...] = griddata(...,method)
[...] = griddata(...,method,options)

method 的值 為
'linear' -- 則,以三角形為基礎的線性內插
'cubic' -- 則,以三角形為基礎的三次方程內插
'nearest' -- 則,用最鄰近的點 內插
'v4'-- -- 則,MATLAB 4 格點樣條函數內插
默認'linear' 線性內插

三角形為基礎,就是按Delaunay方法先找出內插點四周的3個點,構成三角形,內插點在三角形內。然後線性內插,或三次方程內插。

'cubic' 和 'v4' 插值結果構成的曲面較光滑,'linear'和 'nearest' 插值結果構成的曲面不光滑不連續。

前3種方法具體演算法
[1] Barber, C. B., D.P. Dobkin, and H.T. Huhdanpaa, "The Quickhull Algorithm for Convex Hulls," ACM Transactions on Mathematical Software, Vol. 22, No. 4, Dec. 1996, p. 469-483. Available in PDF format at http://www.acm.org/pubs/citations/journals/toms/1996-22-4/p469-barber/.

第4種方法具體演算法見
[2] Sandwell, David T., "Biharmonic Spline Interpolation of GEOS-3 and SEASAT Altimeter Data", Geophysical Research Letters, 14, 2, 139-142,1987.

(參考了 MathWorks 主站材料)

『肆』 空間插值的插值方法

空間插值方法分為兩類:一類是確定性方法,另一類是地質統計學方法。確定性插值方法是基於信息點之間的相似程度或者整個曲面的光滑性來創建一個擬合曲面,比如反距離加權平均插值法(IDW)、趨勢面法、樣條函數法等;地質統計學插值方法是利用樣本點的統計規律,使樣本點之間的空間自相關性定量化,從而在待預測的點周圍構建樣本點的空間結構模型,比如克立格(Kriging)插值法。確定性插值方法的特點是在樣本點處的插值結果和原樣本點實際值基本一致,若是利用非確定性插值方法的話,在樣本處的插值結果與樣本實測值就不一定一致了,有的相差甚遠。

『伍』 什麼叫曲面插值

你最好把問題補充的詳細一點,這樣…范圍太大吧。
對於一維曲線的插值,一般用到的函數yi=interp1(X,Y,xi,method) ,其中method包括nearst,linear,spline,cubic。
對於二維曲面的插值,一般用到的函數zi=interp2(X,Y,Z,xi,yi,method),其中method也和上面一樣,常用的是cubic。
多維曲面法是用來描繪不規則曲面的一種插值技術,經常用於地形學的插值計算中.此方法利用以二次函數為基函數所建立的曲面來描述整個對象,其中最常用的是圓形雙葉雙曲線.由於描述該方法的控制方程恆有解,因此又稱該方法是雙調和的.

『陸』 DSI 動態插值重構三維曲面

用Kriging等方法插值生成地質界面時,往往需要一個參考平面,未知點處某個物理量(如高程)的估計值與該點在參考面上的坐標有關,而且,所有未知點的估計值均由樣本點一次插值得到。對應參考面上的一點,在多值地質界面上可能存在多個對應點,因此,用Kriging等方法無法模擬這類界面。當多值地質界面的樣本數據為散亂點時,可以採用DSI動態插值方法。DSI方法是一種無維數的插值方法,未知點的插值計算只依賴於拓撲網格而不依賴於平面或空間坐標,而且計算過程一般採用迭代方式,有利於動態逼近采樣點。這些特點使得DSI在模擬多值曲面時具有明顯優勢。

5.4.1.1 演算法過程

下面先從一個實例入手,介紹利用DSI動態插值方法模擬多值地質界面的演算法。圖5.12是待模擬的多值界面Γ,它的幾何形態由采樣點集G={gi(xi,yi,zi)i=1,…,n}控制,平面三角網γ為Γ的初始網格。DSI動態插值的目的就是要在G的控制下,將γ逐步變成Γ。由γ變成Γ需要重復執行以下過程:

(1)計算模糊約束。首先將G中的每個點作為模糊約束,在γ'(由γ逐步變成Γ的過程曲面)上找到距離gi最近的三角形Δt,並將gi作為Δt的模糊控制點約束;然後按照式(4.78)和式(4.79)表示每個三角形Δt上的約束,並代入到迭代方程(4.72)中。

(2)曲面變形。在上述約束條件下,對式(4.72)進行迭代計算,直到收斂為止,由此可以得到新的過程曲面γ'。

(3)曲面細分。在曲面變形後,一些三角形的邊長超過了給定的閾值,需要進行細分處理。網格細分方法參見5.2.2節。曲面細分後,過程曲面γ'發生變化,同時,約束gi與γ'上的三角形Δt的對應關系也發生了改變。

反復執行上述過程,直到過程曲面γ'與所有約束G吻合,同時,γ'中三角形的所有邊長均小於給定閾值,這樣,γ'就變成了Γ。圖5.13是由γ變成Γ過程中的幾個過程曲面。

三維地質建模方法及程序實現

『柒』 用matlab 三次多項式函數插值演算法怎麼寫 或者說下設計思路 設計主要結構 功能模塊 流程

看看這個能不能幫到你:Matlab中插值函數匯總和使用說明:MATLAB中的插值函數為interp1,其調用格式為:yi=interp1(x,y,xi,'method')其中x,y為插值點,yi為在被插值點xi處的插值結果;x,y為向量,'method'表示採用的插值方法,MATLAB提供的插值方法有幾種:'nearest'是最鄰近插值,'linear'線性插值;'spline'三次樣條插值;'cubic'立方插值.預設時表示線性插值。注意:所有的插值方法都要求x是單調的,並且xi不能夠超過x的范圍。例如:在一天24小時內,從零點開始每間隔2小時測得的環境溫度數據分別為12,9,9,10,18,24,28,27,25,20,18,15,13,推測中午12點(即13點)時的溫度.x=0:2:24;y=[129910182428272520181513];a=13;y1=interp1(x,y,a,'spline')結果為:27.8725若要得到一天24小時的溫度曲線,則:xi=0:1/3600:24;yi=interp1(x,y,xi,'spline');plot(x,y,'o',xi,yi)命令1interp1功能一維數據插值(表格查找)。該命令對數據點之間計算內插值。它找出一元函數f(x)在中間點的數值。其中函數f(x)由所給數據決定。x:原始數據點Y:原始數據點xi:插值點Yi:插值點格式(1)yi=interp1(x,Y,xi)返回插值向量yi,每一元素對應於參量xi,同時由向量x與Y的內插值決定。參量x指定數據Y的點。若Y為一矩陣,則按Y的每列計算。yi是階數為length(xi)*size(Y,2)的輸出矩陣。(2)yi=interp1(Y,xi)假定x=1:N,其中N為向量Y的長度,或者為矩陣Y的行數。(3)yi=interp1(x,Y,xi,method)用指定的演算法計算插值:』nearest』:最近鄰點插值,直接完成計算;』linear』:線性插值(預設方式),直接完成計算;』spline』:三次樣條函數插值。對於該方法,命令interp1調用函數spline、ppval、mkpp、umkpp。這些命令生成一系列用於分段多項式操作的函數。命令spline用它們執行三次樣條函數插值;』pchip』:分段三次Hermite插值。對於該方法,命令interp1調用函數pchip,用於對向量x與y執行分段三次內插值。該方法保留單調性與數據的外形;』cubic』:與』pchip』操作相同;』v5cubic』:在MATLAB5.0中的三次插值。對於超出x范圍的xi的分量,使用方法』nearest』、』linear』、』v5cubic』的插值演算法,相應地將返回NaN。對其他的方法,interp1將對超出的分量執行外插值演算法。(4)yi=interp1(x,Y,xi,method,'extrap')對於超出x范圍的xi中的分量將執行特殊的外插值法extrap。(5)yi=interp1(x,Y,xi,method,extrapval)確定超出x范圍的xi中的分量的外插值extrapval,其值通常取NaN或0。例1>>x=0:10;y=x.*sin(x);>>xx=0:.25:10;yy=interp1(x,y,xx);>>plot(x,y,'kd',xx,yy)例2>>year=1900:10:2010;>>proct=[75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344267.893];>>p1995=interp1(year,proct,1995)>>x=1900:1:2010;>>y=interp1(year,proct,x,'pchip');>>plot(year,proct,'o',x,y)插值結果為:p1995=252.9885命令2interp2功能二維數據內插值(表格查找)格式(1)ZI=interp2(X,Y,Z,XI,YI)返回矩陣ZI,其元素包含對應於參量XI與YI(可以是向量、或同型矩陣)的元素,即Zi(i,j)←[Xi(i,j),yi(i,j)]。用戶可以輸入行向量和列向量Xi與Yi,此時,輸出向量Zi與矩陣meshgrid(xi,yi)是同型的。同時取決於由輸入矩陣X、Y與Z確定的二維函數Z=f(X,Y)。參量X與Y必須是單調的,且相同的劃分格式,就像由命令meshgrid生成的一樣。若Xi與Yi中有在X與Y范圍之外的點,則相應地返回nan(NotaNumber)。(2)ZI=interp2(Z,XI,YI)預設地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一種情形進行計算。(3)ZI=interp2(Z,n)作n次遞歸計算,在Z的每兩個元素之間插入它們的二維插值,這樣,Z的階數將不斷增加。interp2(Z)等價於interp2(z,1)。(4)ZI=interp2(X,Y,Z,XI,YI,method)用指定的演算法method計算二維插值:』linear』:雙線性插值演算法(預設演算法);』nearest』:最臨近插值;』spline』:三次樣條插值;』cubic』:雙三次插值。例3:>>[X,Y]=meshgrid(-3:.25:3);>>Z=peaks(X,Y);>>[XI,YI]=meshgrid(-3:.125:3);>>ZZ=interp2(X,Y,Z,XI,YI);>>surfl(X,Y,Z);holdon;>>surfl(XI,YI,ZZ+15)>>axis([-33-33-520]);shadingflat>>holdoff例4:>>years=1950:10:1990;>>service=10:10:30;>>wage=[150.697199.592187.625179.323195.072250.287203.212179.092322.767226.505153.706426.730249.633120.281598.243];>>w=interp2(service,years,wage,15,1975)插值結果為:w=190.6288命令3interp3功能三維數據插值(查表)格式(1)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。(2)VI=interp3(V,XI,YI,ZI)預設地,X=1:N,Y=1:M,Z=1:P,其中,[M,N,P]=size(V),再按上面的情形計算。(3)VI=interp3(V,n)作n次遞歸計算,在V的每兩個元素之間插入它們的三維插值。這樣,V的階數將不斷增加。interp3(V)等價於interp3(V,1)。(4)VI=interp3(,method)%用指定的演算法method作插值計算:『linear』:線性插值(預設演算法);『cubic』:三次插值;『spline』:三次樣條插值;『nearest』:最鄰近插值。說明在所有的演算法中,都要求X,Y,Z是單調且有相同的格點形式。當X,Y,Z是等距且單調時,用演算法』*linear』,』*cubic』,』*nearest』,可得到快速插值。例5>>[x,y,z,v]=flow(20);>>[xx,yy,zz]=meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);>>vv=interp3(x,y,z,v,xx,yy,zz);>>slice(xx,yy,zz,vv,[69.5],[12],[-2.2]);shadinginterp;colormapcool命令4interpft功能用快速Fourier演算法作一維插值格式(1)y=interpft(x,n)返回包含周期函數x在重采樣的n個等距的點的插值y。若length(x)=m,且x有采樣間隔dx,則新的y的采樣間隔dy=dx*m/n。注意的是必須n≥m。若x為一矩陣,則按x的列進行計算。返回的矩陣y有與x相同的列數,但有n行。(2)y=interpft(x,n,dim)沿著指定的方向dim進行計算命令5griddata功能數據格點格式(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』:MATLAB4中的griddata演算法。命令6spline功能三次樣條數據插值格式(1)yy=spline(x,y,xx)對於給定的離散的測量數據x,y(稱為斷點),要尋找一個三項多項式y=p(x),以逼近每對數據(x,y)點間的曲線。過兩點(xi,yi)和(xi+1,yi+1)只能確定一條直線,而通過一點的三次多項式曲線有無窮多條。為使通過中間斷點的三次多項式曲線具有唯一性,要增加兩個條件(因為三次多項式有4個系數):a.三次多項式在點(xi,yi)處有:p¢i(xi)=p¢i(xi);b.三次多項式在點(xi+1,yi+1)處有:p¢i(xi+1)=pi¢(xi+1);c.p(x)在點(xi,yi)處的斜率是連續的(為了使三次多項式具有良好的解析性,加上的條件);d.p(x)在點(xi,yi)處的曲率是連續的;對於第一個和最後一個多項式,人為地規定如下條件:①.p¢1¢(x)=p¢2¢(x)②.p¢n¢(x)=p¢n¢-1(x)上述兩個條件稱為非結點(not-a-knot)條件。綜合上述內容,可知對數據擬合的三次樣條函數p(x)是一個分段的三次多項式:ïïîïïí죣££££=nnn+1223112p(x)xxxp(x)xxxp(x)xxxp(x)LLLL其中每段pi(x)都是三次多項式。該命令用三次樣條插值計算出由向量x與y確定的一元函數y=f(x)在點xx處的值。若參量y是一矩陣,則以y的每一列和x配對,再分別計算由它們確定的函數在點xx處的值。則yy是一階數為length(xx)*size(y,2)的矩陣。(2)pp=spline(x,y)返回由向量x與y確定的分段樣條多項式的系數矩陣pp,它可用於命令ppval、unmkpp的計算。例6對離散地分布在y=exp(x)sin(x)函數曲線上的數據點進行樣條插值計算:>>x=[024581212.817.219.920];y=exp(x).*sin(x);>>xx=0:.25:20;>>yy=spline(x,y,xx);>>plot(x,y,'o',xx,yy)命令7interpn功能n維數據插值(查表)格式(1)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是向量,則可以是不同長度,不同方向(行或列)的向量。它們將通過命令ndgrid生成同型的矩陣,再作計算。若點(Y1,Y2,…,Yn)中有位於點(X1,X2,…,Xn)之外的點,則相應地返回特殊變數NaN。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)。VI=interpn(?,method)%用指定的演算法method計算:『linear』:線性插值(預設演算法);『cubic』:三次插值;『spline』:三次樣條插值法;『nearest』:最鄰近插值演算法。命令8meshgrid功能生成用於畫三維圖形的矩陣數據。格式[X,Y]=meshgrid(x,y)將由向量x,y(可以是不同方向的)指定的區域[min(x),max(x),min(y),max(y)]用直線x=x(i),y=y(j)(i=1,2,…,length(x),j=1,2,…,length(y))進行劃分。這樣,得到了length(x)*length(y)個點,這些點的橫坐標用矩陣X表示,X的每個行向量與向量x相同;這些點的縱坐標用矩陣Y表示,Y的每個列向量與向量y相同。其中X,Y可用於計算二元函數z=f(x,y)與三維圖形中xy平面矩形定義域的劃分或曲面作圖。[X,Y]=meshgrid(x)%等價於[X,Y]=meshgrid(x,x)。[X,Y,Z]=meshgrid(x,y,z)%生成三維陣列X,Y,Z,用於計算三元函數v=f(x,y,z)或三維容積圖。例7[X,Y]=meshgrid(1:3,10:14)計算結果為:X=123123123123123Y=命令9ndgrid功能生成用於多維函數計算或多維插值用的陣列格式[X1,X2,…,Xn]=ndgrid(x1,x2,…,xn)%把通過向量x1,x2,x3…,xn指定的區域轉換為數組x1,x2,x3,…,xn。這樣,得到了length(x1)*length(x2)*…*length(xn)個點,這些點的第一維坐標用矩陣X1表示,X1的每個第一維向量與向量x1相同;這些點的第二維坐標用矩陣X2表示,X2的每個第二維向量與向量x2相同;如此等等。其中X1,X2,…,Xn可用於計算多元函數y=f(x1,x2,…,xn)以及多維插值命令用到的陣列。[X1,X2,…,Xn]=ndgrid(x)%等價於[X1,X2,…,Xn]=ndgrid(x,x,…,x)命令10table1功能一維查表格式Y=table1(TAB,X0)%返回用表格矩陣TAB中的行線性插值元素,對X0(TAB的第一列查找X0)進行線性插值得到的結果Y。矩陣TAB是第一列包含關鍵值,而其他列包含數據的矩陣。X0中的每一元素將相應地返回一線性插值行向量。矩陣TAB的第一列必須是單調的。例8>>tab=[(1:4)'hilb(4)]>>y=table1(tab,[12.33.64])查表結果為:>>tab=[(1:4)'hilb(4)]>>y=table1(tab,[12.33.64])

『捌』 matlab 擬合曲面或曲面插值

用散點插值 TriScatteredInterp。 原始數據 x y z我用x0 y0 z0 代表,需要求值得那組用 x1 y1 z1代表。
F = TriScatteredInterp(x0,y0,z0);
z1 = F(x1,y1);

即可。
注意參數寫成列向量。出錯的話,自己help看下數據格式要求。

擬合成關系式不可能,因為擬合關系式必須由人來定。

TriScatteredInterp函數具體演算法是利用 {x0 y0}做平面delaunay三角剖分,然後看每一個(x1 y1)落在哪個三角形中,用這個三角形的三個頂點(x0,y0,z0)做雙線性插值,得到z1.

如果看不懂,估計是對三角剖分不理解,需要自行研究了。

『玖』 如何用MATLAB 求出插值後的具體函數

看看這個能不能幫到你:

Matlab中插值函數匯總和使用說明 :

MATLAB中的插值函數為interp1,其調用格式為:

yi= interp1(x,y,xi,'method')

其中x,y為插值點,yi為在被插值點xi處的插值結果;x,y為向量, 'method'表示採用的插值方法,

MATLAB提供的插值方法有幾種:

'nearest'是最鄰近插值, 'linear'線性插值; 'spline'三次樣條插值; 'cubic'立方插值.預設時表示線性插值。

注意:所有的插值方法都要求x是單調的,並且xi不能夠超過x的范圍。

例如:在一 天24小時內,從零點開始每間隔2小時測得的環境溫度數據分別為

12,9,9,10,18 ,24,28,27,25,20,18,15,13,

推測中午12點(即13點)時的溫度.

x=0:2:24;
y=[12 9 9 10 18 24 28 27 25 20 18
15 13];

a=13;
y1=interp1(x,y,a,'spline')

結果為: 27.8725

若要得到一天24小時的溫度曲線,則:

xi=0:1/3600:24;

yi=interp1(x,y,xi, 'spline');

plot(x,y,'o' ,xi,yi)

命令1
interp1
功能
一維數據插值(表格查找)。該命令對數據點之間計算內插值。它找出一元函數f(x)在中間點的數值。其中函數f(x)由所給數據決定。
x:原始數據點
Y:原始數據點
xi:插值點
Yi:插值點
格式
(1)yi = interp1(x,Y,xi)
返回插值向量yi,每一元素對應於參量xi,同時由向量x
與Y 的內插值決定。參量x 指定數據Y 的點。
若Y
為一矩陣,則按Y 的每列計算。yi 是階數為length(xi)*size(Y,2)的輸出矩陣。
(2)yi = interp1(Y,xi)
假定x=1:N,其中N
為向量Y 的長度,或者為矩陣Y 的行數。
(3)yi = interp1(x,Y,xi,method)
用指定的演算法計算插值:
』nearest』:最近鄰點插值,直接完成計算;
』linear』:線性插值(預設方式),直接完成計算;
』spline』:三次樣條函數插值。對於該方法,命令interp1
調用函數spline、ppval、mkpp、umkpp。這些命令生成一系列用於分段多項式操作的函數。命令spline
用它們執行三次樣條函數插值;
』pchip』:分段三次Hermite
插值。對於該方法,命令interp1 調用函數pchip,用於對向量x 與y 執行分段三次內插值。該方法保留單調性與數據的外形;
』cubic』:與』pchip』操作相同;
』v5cubic』:在MATLAB
5.0 中的三次插值。
對於超出x
范圍的xi 的分量,使用方法』nearest』、』linear』、』v5cubic』的插值演算法,相應地將返回NaN。對其他的方法,interp1
將對超出的分量執行外插值演算法。
(4)yi = interp1(x,Y,xi,method,'extrap')
對於超出x
范圍的xi 中的分量將執行特殊的外插值法extrap。
(5)yi = interp1(x,Y,xi,method,extrapval)
確定超出x
范圍的xi 中的分量的外插值extrapval,其值通常取NaN 或0。
例1

>>x = 0:10; y =
x.*sin(x);
>>xx = 0:.25:10; yy =
interp1(x,y,xx);
>>plot(x,y,'kd',xx,yy)

例2

>> year =
1900:10:2010;
>> proct = [75.995
91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505
249.633 256.344 267.893
];
>>p1995 =
interp1(year,proct,1995)
>>x =
1900:1:2010;
>>y =
interp1(year,proct,x,'pchip');
>>plot(year,proct,'o',x,y)

插值結果為:

p1995 =
252.9885

命令2
interp2
功能
二維數據內插值(表格查找)
格式
(1)ZI
= interp2(X,Y,Z,XI,YI)
返回矩陣ZI,其元素包含對應於參量XI
與YI(可以是向量、或同型矩陣) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用戶可以輸入行向量和列向量Xi 與Yi,此時,輸出向量Zi
與矩陣meshgrid(xi,yi)是同型的。同時取決於由輸入矩陣X、Y 與Z 確定的二維函數Z=f(X,Y)。參量X 與Y
必須是單調的,且相同的劃分格式,就像由命令meshgrid 生成的一樣。若Xi與Yi 中有在X 與Y范圍之外的點,則相應地返回nan(Not a
Number)。
(2)ZI
= interp2(Z,XI,YI)
預設地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一種情形進行計算。
(3)ZI
= interp2(Z,n)
作n
次遞歸計算,在Z 的每兩個元素之間插入它們的二維插值,這樣,Z 的階數將不斷增加。interp2(Z)等價於interp2(z,1)。
(4)ZI
= interp2(X,Y,Z,XI,YI,method)
用指定的演算法method
計算二維插值:
』linear』:雙線性插值演算法(預設演算法);
』nearest』:最臨近插值;
』spline』:三次樣條插值;
』cubic』:雙三次插值。

例3:

>>[X,Y] =
meshgrid(-3:.25:3);
>>Z = peaks(X,Y);
>>[XI,YI] =
meshgrid(-3:.125:3);
>>ZZ =
interp2(X,Y,Z,XI,YI);
>>surfl(X,Y,Z);hold
on;
>>surfl(XI,YI,ZZ+15)
>>axis([-3 3 -3 3 -5
20]);shading flat
>>hold
off

例4:

>>years =
1950:10:1990;
>>service =
10:10:30;
>>wage = [150.697
199.592 187.625
179.323 195.072 250.287
203.212 179.092 322.767
226.505 153.706 426.730
249.633 120.281
598.243];
>>w =
interp2(service,years,wage,15,1975)

插值結果為:

w =
190.6288

命令3
interp3
功能
三維數據插值(查表)
格式
(1)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。
(2)VI
= interp3(V,XI,YI,ZI)
預設地,
X=1:N ,Y=1:M, Z=1:P ,其中,[M,N,P]=size(V),再按上面的情形計算。
(3)VI
= interp3(V,n)
作n
次遞歸計算,在V 的每兩個元素之間插入它們的三維插值。這樣,V 的階數將不斷增加。interp3(V)等價於interp3(V,1)。
(4)VI
= interp3(......,method) %用指定的演算法method 作插值計算:
『linear』:線性插值(預設演算法);
『cubic』:三次插值;
『spline』:三次樣條插值;
『nearest』:最鄰近插值。
說明
在所有的演算法中,都要求X,Y,Z 是單調且有相同的格點形式。當X,Y,Z
是等距且單調時,用演算法』*linear』,』*cubic』,』*nearest』,可得到快速插值。

例5

>>[x,y,z,v] =
flow(20);
>>[xx,yy,zz] =
meshgrid(.1:.25:10, -3:.25:3, -3:.25:3);
>>vv =
interp3(x,y,z,v,xx,yy,zz);
>>slice(xx,yy,zz,vv,[6
9.5],[1 2],[-2 .2]); shading interp;colormap
cool

命令4
interpft
功能
用快速Fourier 演算法作一維插值
格式
(1)y
= interpft(x,n)
返回包含周期函數x
在重采樣的n 個等距的點的插值y。若length(x)=m,且x 有采樣間隔dx,則新的y 的采樣間隔dy=dx*m/n。注意的是必須n≥m。若x
為一矩陣,則按x 的列進行計算。返回的矩陣y 有與x 相同的列數,但有n 行。
(2)y
= interpft(x,n,dim)
沿著指定的方向dim
進行計算

命令5
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 演算法。

命令6
spline
功能
三次樣條數據插值
格式
(1)yy
= spline(x,y,xx)
對於給定的離散的測量數據x,y(稱為斷點),要尋找一個三項多項式y
= p(x) ,以逼近每對數據(x,y)點間的曲線。過兩點(xi, yi) 和(xi+1, yi+1)
只能確定一條直線,而通過一點的三次多項式曲線有無窮多條。為使通過中間斷點的三次多項式曲線具有唯一性,要增加兩個條件(因為三次多項式有4
個系數):
a.三次多項式在點(xi,
yi) 處有: p¢i(xi) = p¢i(xi) ;
b.三次多項式在點(xi+1,
yi+1) 處有: p¢i(xi+1) = pi¢(xi+1) ;
c.p(x)在點(xi,
yi) 處的斜率是連續的(為了使三次多項式具有良好的解析性,加上的條件);
d.p(x)在點(xi,
yi) 處的曲率是連續的;
對於第一個和最後一個多項式,人為地規定如下條件:
①.
p¢1¢(x) = p¢2¢(x)
②.
p¢n¢(x) = p¢n¢-1(x)
上述兩個條件稱為非結點(not-a-knot)條件。綜合上述內容,可知對數據擬合的三次樣條函數p(x)是一個分段的三次多項式:
ï
ïî
ï
ïí
ì
£
£
£
£
£
£
=
n
n n+1
2
2 3
1
1 2
p
(x) x x x
p
(x) x x x
p
(x) x x x
p(x)
L
L L L
其中每段pi(x)
都是三次多項式。
該命令用三次樣條插值計算出由向量x
與y 確定的一元函數y=f(x)在點xx 處的值。若參量y 是一矩陣,則以y 的每一列和x 配對,再分別計算由它們確定的函數在點xx 處的值。則yy
是一階數為length(xx)*size(y,2)的矩陣。
(2)pp
= spline(x,y)
返回由向量x
與y 確定的分段樣條多項式的系數矩陣pp,它可用於命令ppval、unmkpp 的計算。

例6
對離散地分布在y=exp(x)sin(x)函數曲線上的數據點進行樣條插值計算:

>>x = [0 2 4 5 8 12 12.8
17.2 19.9 20]; y = exp(x).*sin(x);
>>xx = 0:.25:20;
>>yy =
spline(x,y,xx);
>>plot(x,y,'o',xx,yy)

命令7
interpn
功能
n 維數據插值(查表)
格式
(1)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
是向量,則可以
是不同長度,不同方向(行或列)的向量。它們將通過命令ndgrid生成同型的矩陣,
再作計算。若點(Y1,Y2,…,Yn) 中有位於點(X1,X2,…,Xn)之外的點,則相應地返回特殊變數NaN。
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)。
VI
= interpn(?,method) %用指定的演算法method 計算:
『linear』:線性插值(預設演算法);
『cubic』:三次插值;
『spline』:三次樣條插值法;
『nearest』:最鄰近插值演算法。

命令8
meshgrid
功能
生成用於畫三維圖形的矩陣數據。
格式
[X,Y] = meshgrid(x,y) 將由向量x,y(可以是不同方向的)指定的區域[min(x),max(x) , min(y) , max(y)]
用直線x=x(i),y=y(j) ( i=1,2,…,length(x)
,j=1,2,…,length(y))進行劃分。這樣,得到了length(x)*length(y)個點,
這些點的橫坐標用矩陣X
表示,X 的每個行向量與向量x 相同;這些點的縱坐標用矩陣Y 表示,Y 的每個列向量與向量y 相同。其中X,Y可用於計算二元函數z=f(x,y)與三維圖形中xy
平面矩形定義域的劃分或
曲面作圖。
[X,Y]
= meshgrid(x) %等價於[X,Y]=meshgrid(x,x)。
[X,Y,Z]
= meshgrid(x,y,z) %生成三維陣列X,Y,Z,用於計算三元函數v=f(x,y,z)或三維容積圖。

例7

[X,Y] =
meshgrid(1:3,10:14)
計算結果為:

X =
1 2 3
1 2 3
1 2 3
1 2 3
1 2 3
Y =
10 10 10
11 11 11
12 12 12
13 13 13
14 14
14

命令9
ndgrid
功能
生成用於多維函數計算或多維插值用的陣列
格式
[X1,X2,…,Xn] = ndgrid(x1,x2,…,xn) %把通過向量x1,x2,x3…,xn 指定的區域轉換為數組x1,x2,x3,…,xn
。這樣, 得到了 length(x1)*length(x2)*…*length(xn)個點,這些點的第一維坐標用矩陣X1 表
示,X1
的每個第一維向量與向量x1 相同;這些點的第二維坐標用矩陣X2 表示,X2 的每個第二維向量與向量x2 相同;如此等等。
其中X1,X2,…,Xn
可用於計算多元函數y=f(x1,x2,…,xn)以及多維插值命令用到的陣列。
[X1,X2,…,Xn]
= ndgrid(x) %等價於[X1,X2,…,Xn] = ndgrid(x,x,…,x)

命令10
table1
功能
一維查表
格式
Y = table1(TAB,X0) %返回用表格矩陣TAB 中的行線性插值元素,對X0(TAB的第一列查找X0)進行線性插值得到的結果Y。矩陣TAB
是第一列包含
關鍵值,而其他列包含數據的矩陣。X0
中的每一元素將相應地返回一線性插值行向量。矩陣TAB 的第一列必須是單調的。

例8

>>tab = [(1:4)'
hilb(4)]
>>y = table1(tab,[1 2.3
3.6 4])
查表結果為:

>>tab = [(1:4)'
hilb(4)]
>>y = table1(tab,[1 2.3
3.6 4])

閱讀全文

與曲面插值演算法相關的資料

熱點內容
正宗溯源碼大燕條一克一般多少錢 瀏覽:917
電腦感染exe文件夾 瀏覽:916
wpsppt怎麼轉pdf格式 瀏覽:88
騰訊文檔在線編輯怎麼添加密碼 瀏覽:880
本地不能訪問伺服器地址 瀏覽:865
訪問伺服器命令 瀏覽:835
華為雲伺服器分銷商 瀏覽:954
Linux定位內存泄露 瀏覽:198
工程加密狗視頻 瀏覽:720
不在內網怎麼連接伺服器 瀏覽:664
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137
交易平台小程序源碼下載 瀏覽:148
程序員記筆記用什麼app免費的 瀏覽:646
java與單片機 瀏覽:897
伺服器內網如何通過公網映射 瀏覽:478
程序員穿越到宋代 瀏覽:624
怎麼使用雲伺服器掛游戲 瀏覽:620
真實的幸福pdf 瀏覽:345
d盤php調用c盤的mysql 瀏覽:267