在前面介紹了學(xué)習(xí)MATLAB的一維插值方法,今天來學(xué)習(xí)MATLAB二維插值方法。
????????首先來看二維插值函數(shù)的使用格式:
z1=interp2(x,y,z,x1,y1,'method')
????????其中x , y , z分別是我們給定的三個(gè)同維矩陣,x , y , z三者一 一對(duì)應(yīng)構(gòu)成我們需要的網(wǎng)格數(shù)據(jù),x1,y1即是我們要插值點(diǎn)對(duì)應(yīng)的坐標(biāo),z1是同維數(shù)的矩陣,稱為插值點(diǎn)。也就是說已知x , y來求 z 的值。‘method‘是插值使用的方法,二維插值的方法有‘linear’(雙線性插值),‘nearest’(最臨近點(diǎn)插值),‘spline’(三次樣條插值),‘cubic’(雙立方插值)。
? ? ? ? ?注意:x,y,z三者同維矩陣,但不和x1,y1,z1同維
????????要進(jìn)行插值,我們得定義需要的數(shù)據(jù):確定x , y , z的值。在此我們使用meshgrid()函數(shù)來生成直角平面中的網(wǎng)格坐標(biāo)。
[x,y]=meshgrid(0:3,0:3)
????????這樣我們就得到了兩個(gè)同維的矩陣,通過發(fā)現(xiàn)x經(jīng)過轉(zhuǎn)置后即為y,我們可以理解為將行坐標(biāo)和列坐標(biāo)拆開,然后再分別存儲(chǔ)到兩個(gè)矩陣當(dāng)中,一旦x , y相結(jié)合,便可以表示為坐標(biāo)矩陣。
????????隨后,我們來定義z的值,因?yàn)閤 , y , z必須是同維數(shù)矩陣,所以我們定義z時(shí)要注意維數(shù)。如上圖,x,y,z皆為四行四列的方陣,并且x,y對(duì)應(yīng)一個(gè)z,例如x,y=(0 , 0)對(duì)應(yīng)著z=1;x,y=(1?, 0)對(duì)應(yīng)著z=2,以此類推,x和y相應(yīng)位置組成的坐標(biāo)點(diǎn),對(duì)應(yīng)著相應(yīng)位置的z點(diǎn)。
代碼如下:
clc;clear;
[x,y]=meshgrid(0:3,0:3)
z=[1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16]
surf(x,y,z)
xlabel('x');ylabel('y');zlabel('z')
效果圖:
? ? ? ? ?接下來,主角登場(chǎng),我們開始對(duì)原數(shù)據(jù)進(jìn)行插值
代碼如下:
clc;clear;
[x,y]=meshgrid(0:3,0:3) %也可meshgrid(0:1:3,0:1:3),方便理解
z=[1,2,3,4
5,6,7,8
9,10,11,12
13,14,15,16]
% surf(x,y,z)
[x1,y1]=meshgrid(0:0.1:1,0:0.1:1)
z1=interp2(x,y,z,x1,y1,'spline')
surf(x2,y2,z2)
xlabel('x');ylabel('y');zlabel('z')
? ? ? ? 在上面我們定義了x,y的范圍是[0:3],間隔為1,所以x1,y1的范圍不能超過這個(gè)范圍,這里我們間隔設(shè)為0.1,方便觀察與原圖的差別。
插值后的圖:文章來源:http://www.zghlxwxcb.cn/news/detail-516063.html
????????今天的學(xué)習(xí)內(nèi)容結(jié)束??!文章來源地址http://www.zghlxwxcb.cn/news/detail-516063.html
到了這里,關(guān)于(每日一練)MATLAB二維插值的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!