請(qǐng)教Matlab的griddata的用法
griddata的作用是數(shù)據(jù)網(wǎng)格化。其一般用法格式為
ZI = griddata(x,y,z,XI,YI) %x、y、z——數(shù)據(jù),XI,YI——X-Y平面上的網(wǎng)格數(shù)據(jù)
應(yīng)用實(shí)例:
>>x = rand(100,1)*4-2; y = rand(100,1)*4-2;
>>z = x.*exp(-x.^2-y.^2);
>>ti = -2:.25:2;
>>[XI,YI] = meshgrid(ti,ti);
>>ZI = griddata(x,y,z,XI,YI);
>>mesh(XI,YI,ZI), hold
>>plot3(x,y,z,'o'), hold off
>> xlabel('x'),ylabel('y'),zlabel('z')
運(yùn)行結(jié)果
請(qǐng)教Matlab的griddata的用法
MATLAB散亂點(diǎn)插值函數(shù)
griddata函數(shù)
語(yǔ)法:
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
[...] = griddata(...,method)
[...] = griddata(...,method,options)
說(shuō)明:
ZI = griddata(x,y,z,XI,YI) 調(diào)整形如z = f(x,y)的曲面,使之與非等間距矢量(x,y,z)中的數(shù)據(jù)吻合。griddata 函數(shù)在指定的(XI,YI)點(diǎn)處插補(bǔ)此曲面,生成ZI. 此曲面一定通過(guò)這些數(shù)據(jù)點(diǎn)。 XI 和 YI 通常構(gòu)成均勻網(wǎng)格(與meshgrid函數(shù)生成的相同). XI 可以是行矢量,這種情況下該矢量確定一個(gè)具有固定列數(shù)的矩陣。與之類(lèi)似,YI 可以是列矢量,確定一個(gè)具有固定行數(shù)的矩陣。
[XI,YI,ZI] = griddata(x,y,z,XI,YI) 函數(shù)返回與上述矩陣相同的插補(bǔ)后的矩陣ZI。并返回由行矢量XI和列矢量yi形成的矩陣XI 和YI. 后者與meshgrid 函數(shù)返回的矩陣相同。
[...] = griddata(...,method)使用規(guī)定的插補(bǔ)方法:
'linear' 基于三角形的線(xiàn)性插補(bǔ)法(缺省)
'cubic' 基于三角形的三次插補(bǔ)法
'nearest' 最近鄰居插補(bǔ)法
'v4' MATLAB 4 griddata方法。
這些方法定義了匹配數(shù)據(jù)點(diǎn)的曲面類(lèi)型。'cubic' 和 'v4' 方法生成平滑曲面,而 'linear' 和 'nearest' 分別具有一階導(dǎo)數(shù)和零階導(dǎo)數(shù)不連續(xù)。除'v4' 外所有方法基于數(shù)據(jù)的三角化。如果方法為[], 則使用缺省的'linear' 方法。
[...] = griddata(...,method,options)指定一串將通過(guò)delaunayn函數(shù)在Qhull中使用的單元陣列選項(xiàng). 如果選項(xiàng)為 [], 則使用缺省的三角化選項(xiàng)。如果選項(xiàng)為{''}, 不使用任何選項(xiàng),包括缺省選項(xiàng)。有時(shí),griddata 函數(shù)可能將位于數(shù)據(jù)凸殼上或靠近凸殼的點(diǎn)返回為NaNs。這是因?yàn)橛袝r(shí)計(jì)算中的圓整處理使得很難確定一個(gè)靠近邊界的點(diǎn)是否處于凸殼內(nèi)。
算法:
griddata(...,'v4') 命令使用 [3] 中文檔化的方法。其他griddata方法基于使用Qhull [2] 的數(shù)據(jù)三角化。
實(shí)例:
對(duì)一個(gè)函數(shù)在±2.0范圍內(nèi)隨機(jī)采樣100點(diǎn):
rand('ed',0)
x = rand(100,1)*4-2; y = rand(100,1)*4-2;
z = x.*exp(-x.^2-y.^2);
x, y, 和 z 均為包含非均勻采樣數(shù)據(jù)的矢量。定義一個(gè)規(guī)范的網(wǎng)格,將數(shù)據(jù)與網(wǎng)格匹配:
ti = -2:.25:2;
[XI,YI] = meshgrid(ti,ti);
ZI = griddata(x,y,z,XI,YI);
Plot the gridded data along with the nonuniform data points ud to generate it: mesh(XI,YI,ZI), hold
plot3(x,y,z,'o'), hold
matlab中的插值函數(shù) griddata的具體原理是什么呢?可否大概講解一下!!!
griddata 調(diào)用方法:
ZI = griddata(x,y,z,XI,YI)
[XI,YI,ZI] = griddata(x,y,z,XI,YI)
[...] = griddata(...,method)
[...] = griddata(...,method,options)
method 的值 為
'linear' -- 則,以三角形為基礎(chǔ)的線(xiàn)性?xún)?nèi)插
'cubic' -- 則,以三角形為基礎(chǔ)的三次方程內(nèi)插
'nearest' -- 則,用最鄰近的點(diǎn) 內(nèi)插
'v4'-- -- 則,MATLAB 4 格點(diǎn)樣條函數(shù)內(nèi)插
默認(rèn)'linear' 線(xiàn)性?xún)?nèi)插
三角形為基礎(chǔ),就是按Delaunay方法先找出內(nèi)插點(diǎn)四周的3個(gè)點(diǎn),構(gòu)成三角形,內(nèi)插點(diǎn)在三角形內(nèi)。然后線(xiàn)性?xún)?nèi)插,或三次方程內(nèi)插。
'cubic' 和 'v4' 插值結(jié)果構(gòu)成的曲面較光滑,'linear'和 'nearest' 插值結(jié)果構(gòu)成的曲面不光滑不連續(xù)。
前3種方法具體算法見(jiàn)
[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種方法具體算法見(jiàn)
[2] Sandwell, David T., "Biharmonic Spline Interpolation of GEOS-3 and SEASAT Altimeter Data", Geophysical Rearch Letters, 14, 2, 139-142,1987.
(參考了 MathWorks 主站材料)
請(qǐng)教Matlab的griddata的用法
MATLAB散亂點(diǎn)插值函數(shù) griddata函數(shù) 語(yǔ)法: ZI = griddata(x,y,z,XI,YI) [XI,YI,ZI] = griddata(x,y,z,XI,YI) [...] = griddata(...,method) [...] = griddata(...,method,options) 說(shuō)明: ZI = griddata(x,y,z,XI,YI) 調(diào)整形如z = f(x,y)的曲面...
關(guān)于matlab中用griddata繪制偽色彩圖的一點(diǎn)經(jīng)驗(yàn)教訓(xùn)
整個(gè)事情起源于這個(gè)圖
這是之前和別人組之前合作測(cè)試時(shí)候我?guī)熜之?huà)的,橫軸壓力縱軸溫度,顏色軸是電阻率的對(duì)數(shù),很直觀的看出來(lái)了金屬到半導(dǎo)體絕緣體的轉(zhuǎn)變與壓力溫度的關(guān)系。
還記得那是一個(gè)陽(yáng)光明媚的能熱死個(gè)人的下午,我去找老板討論這一組數(shù)據(jù),大概意思就是壓力下這個(gè)樣品從一個(gè)絕緣體/半導(dǎo)體轉(zhuǎn)變?yōu)橐粋€(gè)金屬。老板拿出了師兄之前畫(huà)的那個(gè)圖,說(shuō)你去試試也畫(huà)下類(lèi)似這個(gè)的圖吧,應(yīng)該不難的。
“應(yīng)該不難的”這種話(huà)從老板嘴里說(shuō)出來(lái)一般都不可信,然后我去問(wèn)師兄他比較忙只告訴我他用matlab畫(huà)的偽色彩圖,那怎么辦呢,我只能一天從零開(kāi)始入門(mén)matlab了啊。
先說(shuō)說(shuō)我摸索的過(guò)程,我思路一開(kāi)始是這樣的:我們測(cè)試是在不同壓力下對(duì)其電阻-溫度關(guān)系進(jìn)行的測(cè)試,而要將其轉(zhuǎn)化為三維圖像首先要將其轉(zhuǎn)化為矩陣,而不同壓力下測(cè)試的溫度范圍都不同,也就意味著沒(méi)法同時(shí)放到矩陣?yán)铮窃撛趺崔k呢?
我選擇了igor pro中的插值功能來(lái)解決這個(gè)問(wèn)題,自己寫(xiě)了個(gè)小的macro來(lái)執(zhí)行。
大概意思就是根據(jù)輸入的T1、T2兩個(gè)溫度點(diǎn) ,在其中均勻分600個(gè)位置,然后在這600個(gè)位置中對(duì)數(shù)據(jù)結(jié)果進(jìn)行插值,因?yàn)槲覀兊臏y(cè)試一般會(huì)得到幾千個(gè)點(diǎn),所以這樣的簡(jiǎn)單插值精度完全可以保證。分別對(duì)不同壓力下數(shù)據(jù)允許這個(gè)macro,即可得到同一溫度下不同壓力對(duì)應(yīng)的電阻值。將不同壓力下插值得到的600*n個(gè)數(shù)據(jù)在excel中排好導(dǎo)入matlab即可得到矩陣。運(yùn)行g(shù)riddata指令即可得到結(jié)果。
把相變點(diǎn)一加坐標(biāo)軸一標(biāo)也是有那么點(diǎn)意思,不過(guò)有個(gè)小問(wèn)題,對(duì)每個(gè)壓力點(diǎn)的測(cè)試溫度范圍都不完全相同,圖中是對(duì)3.8-290K進(jìn)行的插值,但許多時(shí)候測(cè)量范圍會(huì)差很多,尤其是對(duì)一些高溫超導(dǎo)體,其下半部分不可能這么整齊,比如下圖,而此處使用這種辦法只能在矩陣中手動(dòng)將沒(méi)有數(shù)字的地方設(shè)為0,非常麻煩;同時(shí)也不能使用'v4'參數(shù),而要換為cubic spline模式。
然后我又去找?guī)熜钟懻摿耍龍D敲詐出他的原始方法,經(jīng)過(guò)一番討論,以及我自己的摸索,終于找到了更一般的方法。
我們首先來(lái)看看matlab中g(shù)riddata的描述
不僅可以處理矩陣的數(shù)據(jù),同時(shí)也可對(duì)輸入的(x,y,z)點(diǎn)集進(jìn)行插值,此方法即不再將其視為矩陣,而視為xy對(duì)應(yīng)的二元函數(shù)z,輸入所有的xyz數(shù)據(jù)進(jìn)行插值即可。然而處理時(shí)首先還要注意點(diǎn)的數(shù)量,我們測(cè)試的原始數(shù)據(jù)加起來(lái)總共有上萬(wàn)個(gè)點(diǎn),為了提高效率依舊可以先使用igor pro對(duì)數(shù)據(jù)插值及平滑處理,不過(guò)不用再設(shè)定溫度范圍,直接選擇點(diǎn)的個(gè)數(shù)(600)插值即可,然后將得到的所有數(shù)據(jù)(600*n)輸入excel中分別為三列:壓力、溫度、電阻,導(dǎo)入matlab中作為三個(gè)向量,運(yùn)行指令
即可得到完整的包括0K附近及300K附近邊角缺憾的相圖。之后再添加其他說(shuō)明數(shù)據(jù)即可。
這種方法相比于前者更為簡(jiǎn)便,且應(yīng)用范圍更廣,我以后應(yīng)該不會(huì)用我費(fèi)老大勁搞出來(lái)的笨辦法了。
matlab插值griddata
你插值時(shí),原坐標(biāo)V1范圍是[4.9123,12.5538],P1是[4.2743,11.0398],Q1是[260.8718, 334.8364],而插值時(shí)坐標(biāo)v1范圍是[3 ,15],p1是[3 ,15],q1是[-630.8488,333.5959],雖然Q1中無(wú)負(fù)值,但插值出的q1有負(fù)值,畫(huà)出圖來(lái)就會(huì)有負(fù)值。