關(guān)于matlab中用griddata繪制偽色彩圖的一點(diǎn)經(jīng)驗(yàn)教訓(xùn)

整個事情起源于這個圖

Chinese Physics Letters, 2017(8):117-120.

? ? 這是之前和別人組之前合作測試時候我?guī)熜之嫷耐奘簦瑱M軸壓力縱軸溫度诬留,顏色軸是電阻率的對數(shù)缨睡,很直觀的看出來了金屬到半導(dǎo)體絕緣體的轉(zhuǎn)變與壓力溫度的關(guān)系。

? ? 還記得那是一個陽光明媚的能熱死個人的下午把鉴,我去找老板討論這一組數(shù)據(jù)故黑,大概意思就是壓力下這個樣品從一個絕緣體/半導(dǎo)體轉(zhuǎn)變?yōu)橐粋€金屬。老板拿出了師兄之前畫的那個圖庭砍,說你去試試也畫下類似這個的圖吧场晶,應(yīng)該不難的。

一組打了厚碼是數(shù)據(jù)

? ? “應(yīng)該不難的”這種話從老板嘴里說出來一般都不可信怠缸,然后我去問師兄他比較忙只告訴我他用matlab畫的偽色彩圖交洗,那怎么辦呢馏予,我只能一天從零開始入門matlab了啊。

? ? 先說說我摸索的過程,我思路一開始是這樣的:我們測試是在不同壓力下對其電阻-溫度關(guān)系進(jìn)行的測試划鸽,而要將其轉(zhuǎn)化為三維圖像首先要將其轉(zhuǎn)化為矩陣,而不同壓力下測試的溫度范圍都不同靡狞,也就意味著沒法同時放到矩陣?yán)锿誓牵窃撛趺崔k呢?

? ? 我選擇了igor pro中的插值功能來解決這個問題疚俱,自己寫了個小的macro來執(zhí)行劝术。

macro interpof(T1,T2,pressure)

variable T1=3.5, T2=290, pressure

Make/N=600/D T_tot

SetScale/I x,T1,T2,T_tot

T_tot=x

String newname1="T_R_"+num2str(pressure)+"G"

String newname2="R_"+num2str(pressure)+"G"

String newname3="R_"+num2str(pressure)+"G_tot"

Duplicate T_tot? $newname3

$newname3=interp(T_tot,$newname1,$newname2)

Duplicate $newname3 ::$newname3

end

大概意思就是根據(jù)輸入的T1、T2兩個溫度點(diǎn) 呆奕,在其中均勻分600個位置养晋,然后在這600個位置中對數(shù)據(jù)結(jié)果進(jìn)行插值,因?yàn)槲覀兊臏y試一般會得到幾千個點(diǎn)梁钾,所以這樣的簡單插值精度完全可以保證绳泉。分別對不同壓力下數(shù)據(jù)允許這個macro,即可得到同一溫度下不同壓力對應(yīng)的電阻值姆泻。將不同壓力下插值得到的600*n個數(shù)據(jù)在excel中排好導(dǎo)入matlab即可得到矩陣零酪。運(yùn)行g(shù)riddata指令即可得到結(jié)果。

[p,t,z]=griddata(P,T,lnR,linspace(2,12)',linspace(3.5,290),'v4');%插值

pcolor(p,t,z);shading interp


matlab插值得到的結(jié)果
把相變點(diǎn)(被馬賽克掉的)這些結(jié)果加上之后的結(jié)果

? ? 把相變點(diǎn)一加坐標(biāo)軸一標(biāo)也是有那么點(diǎn)意思拇勃,不過有個小問題蛾娶,對每個壓力點(diǎn)的測試溫度范圍都不完全相同,圖中是對3.8-290K進(jìn)行的插值潜秋,但許多時候測量范圍會差很多蛔琅,尤其是對一些高溫超導(dǎo)體,其下半部分不可能這么整齊峻呛,比如下圖罗售,而此處使用這種辦法只能在矩陣中手動將沒有數(shù)字的地方設(shè)為0辜窑,非常麻煩;同時也不能使用'v4'參數(shù)寨躁,而要換為cubic spline模式穆碎。

Nature Communications, 2018, 9(380).

? ? 然后我又去找?guī)熜钟懻摿耍龍D敲詐出他的原始方法职恳,經(jīng)過一番討論所禀,以及我自己的摸索,終于找到了更一般的方法放钦。

? ? 我們首先來看看matlab中g(shù)riddata的描述

griddata

Interpolates scattered data - generally to produce gridded data

? ? Vq = griddata(X,Y,V,Xq,Yq) fits a surface of the form V = F(X,Y) to the ? ? scattered data in (X, Y, V). The coordinates of the data points are ? ? defined by the vectors (X,Y) and V defines the corresponding values. ? ? griddata interpolates the surface F at the query points (Xq,Yq) and ? ? returns the values in Vq. The query points (Xq, Yq) generally represent ? ? a grid obtained from NDGRID or MESHGRID, hence the name griddata.

? ? Vq = griddata(X,Y,Z,V,Xq,Yq,Zq) fits a hyper-surface of the form ? ? V = F(X,Y,Z) to the scattered data in (X, Y, Z, V). The coordinates of ? ? the data points are defined by the vectors (X,Y,Z) and V defines the ? ? corresponding values. griddata interpolates the surface F at the query ? ? points (Xq,Yq,Zq) and returns the values in Vq.

? ? ? Vq = griddata(X,Y,V, xq, yq) where xq is a row vector and yq is a ? ? column vector, expands (xq, yq) via [Xq, Yq] = meshgrid(xq,yq). ? ? [Xq, Yq, Vq] = griddata(X,Y,V, xq, yq) returns the grid coordinates ? ? arrays in addition.

? ? Note: The syntax for implicit meshgrid expansion of (xq, yq) will be ? ? removed in a future release.

? ? griddata(..., METHOD) where METHOD is one of

? ? ? ? 'nearest'? - Nearest neighbor interpolation

? ? ? ? 'linear'? ? - Linear interpolation (default)

? ? ? ? 'natural'? - Natural neighbor interpolation

? ? ? ? 'cubic'? ? - Cubic interpolation (2D only)

? ? ? ? 'v4'? ? ? ? - MATLAB 4 griddata method (2D only)

? ? defines the interpolation method. The 'nearest' and 'linear' methods ? ? have discontinuities in the zero-th and first derivatives respectively, ? ? while the 'cubic' and 'v4' methods produce smooth surfaces.? All the ? ? methods except 'v4' are based on a Delaunay triangulation of the data.

? ? Example 1:

? ? ? % Interpolate a 2D scattered data set over a uniform grid

? ? ? x = 4*rand(100,1)-2; y = 8*rand(100,1)-4; z = x.*exp(-x.^2-y.^2);

? ? ? [xq,yq] = meshgrid(-2:.2:2, -4:.4:4);

? ? ? zq = griddata(x,y,z,xq,yq);

? ? ? mesh(xq,yq,zq), hold on, plot3(x,y,z,'o'), hold off

? ? Example 2:

? ? ? % Interpolate a 3D data set over a grid in the x-y (z=0) plane

? ? ? x = 2*rand(5000,1)-1;

y = 2*rand(5000,1)-1;

z = 2*rand(5000,1)-1;

? ? ? v = x.^2 + y.^2 + z.^2;

? ? ? d = -0.8:0.05:0.8;

? ? ? [xq,yq,zq] = meshgrid(d,d,0);

? ? ? vq = griddata(x,y,z,v,xq,yq,zq);

? ? ? surf(xq,yq,vq);

? ? ? ? 不僅可以處理矩陣的數(shù)據(jù)色徘,同時也可對輸入的(x,y操禀,z)點(diǎn)集進(jìn)行插值褂策,此方法即不再將其視為矩陣,而視為xy對應(yīng)的二元函數(shù)z颓屑,輸入所有的xyz數(shù)據(jù)進(jìn)行插值即可斤寂。然而處理時首先還要注意點(diǎn)的數(shù)量,我們測試的原始數(shù)據(jù)加起來總共有上萬個點(diǎn)揪惦,為了提高效率依舊可以先使用igor pro對數(shù)據(jù)插值及平滑處理遍搞,不過不用再設(shè)定溫度范圍,直接選擇點(diǎn)的個數(shù)(600)插值即可器腋,然后將得到的所有數(shù)據(jù)(600*n)輸入excel中分別為三列:壓力溪猿、溫度、電阻蒂培,導(dǎo)入matlab中作為三個向量再愈,運(yùn)行指令

[x,y,z]=griddata(P,T,Z,linspace(2,12)',linspace(0,300),'cubic');%插值

pcolor(x,y,z);shading interp

即可得到完整的包括0K附近及300K附近邊角缺憾的相圖榜苫。之后再添加其他說明數(shù)據(jù)即可护戳。

這種方法相比于前者更為簡便,且應(yīng)用范圍更廣垂睬,我以后應(yīng)該不會用我費(fèi)老大勁搞出來的笨辦法了媳荒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市驹饺,隨后出現(xiàn)的幾起案子钳枕,更是在濱河造成了極大的恐慌,老刑警劉巖赏壹,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鱼炒,死亡現(xiàn)場離奇詭異,居然都是意外死亡蝌借,警方通過查閱死者的電腦和手機(jī)昔瞧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門指蚁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人自晰,你說我怎么就攤上這事凝化。” “怎么了酬荞?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵搓劫,是天一觀的道長。 經(jīng)常有香客問我混巧,道長枪向,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任牲剃,我火速辦了婚禮遣疯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘凿傅。我一直安慰自己缠犀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布聪舒。 她就那樣靜靜地躺著辨液,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箱残。 梳的紋絲不亂的頭發(fā)上滔迈,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音被辑,去河邊找鬼燎悍。 笑死,一個胖子當(dāng)著我的面吹牛盼理,可吹牛的內(nèi)容都是我干的谈山。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼宏怔,長吁一口氣:“原來是場噩夢啊……” “哼奏路!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起臊诊,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤鸽粉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后抓艳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體触机,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了儡首。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片销斟。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖椒舵,靈堂內(nèi)的尸體忽然破棺而出蚂踊,到底是詐尸還是另有隱情,我是刑警寧澤笔宿,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布犁钟,位于F島的核電站,受9級特大地震影響泼橘,放射性物質(zhì)發(fā)生泄漏涝动。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一炬灭、第九天 我趴在偏房一處隱蔽的房頂上張望醋粟。 院中可真熱鬧,春花似錦重归、人聲如沸米愿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽育苟。三九已至,卻和暖如春椎木,著一層夾襖步出監(jiān)牢的瞬間违柏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工香椎, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留漱竖,地道東北人。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓畜伐,卻偏偏與公主長得像馍惹,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子烤礁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 7-16星期六讼积,地鐵一號線上肥照,去回龍觀脚仔。 今早沒出去跑步,本打算周末去傳媒大學(xué)舆绎,痛痛快快的跑上十公里鲤脏,結(jié)果沒出門。...
    魏雨self閱讀 309評論 0 0
  • 天天曬,氣機(jī)有發(fā)動的感覺沦疾,身體里有明顯的氣體移動的跡象称近![奸笑] 科學(xué)實(shí)驗(yàn)站!打破迷信的最好方式是實(shí)踐哮塞![奸笑] ...
    縱情嬉戲天地間閱讀 1,992評論 0 0
  • 最近長沙一直在下雨刨秆,雨水沖刷著這個城市的陰霾,空氣顯得格外清新忆畅,任何事物都有兩面性衡未,就像馬克斯所說,事物總是有好的...
    噯寧閱讀 202評論 0 0
  • JSP JSP是一種Web服務(wù)設(shè)計(jì)標(biāo)準(zhǔn),以Java技術(shù)為基礎(chǔ)板惑,實(shí)現(xiàn)頁面的動態(tài)輸出橄镜。Serlvet 提供了用于服務(wù)器...
    云承寒閱讀 1,190評論 0 5
  • 車站 -文/大漠 睡意朦朧的車站 在霓虹閃爍中醒來 流浪的腳步 驚擾了寒風(fēng) 刺骨的冰冷 鉆進(jìn)行囊 我把身子縮起來 ...
    大漠qxy閱讀 156評論 0 4