matlab中的interp2插值函式
阿新 • • 發佈:2019-01-03
看了好多文章才大體明白插值的含義,(⊙﹏⊙)b,這理解能力也是醉了.....為了記住這個慘痛教訓,在吃飯前要把看到的文章總結一下~~
interp2
功能 二維資料內插值
格式
(1)ZI = interp2(X,Y,Z,XI,YI)
好多文章裡巴拉巴拉說了一堆,迷迷糊糊的,我還是用我的大白話敘述一下:
X,Y是原始資料,相當於座標,類似於meshgrid的座標範圍,這麼說應該很容易理解......
Z是在上述座標下的數值,也就是在座標[xi yi]下的zi
XI,YI就是用於插值的座標,
返回值ZI就是用於提取插值之後,對應位置的值
這裡需要注意:
X 與Y必須是單調的
若Xi與Yi中有在X與Y範圍之外的點,則相應地返回nan(Not a Number)
下面是其他形式的解釋,這個我就直接copy啦~~
(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’:雙三次插值。
總之,插值是根據已知的去推測未知,X,Y是已知的位置,XI,YI是未知的位置(當然也可以包含已知點,I表示Interp,實際命名已經很清楚了)
下面,是一個copy的例子:
(這裡,為了更清楚的觀測原始資料和插值資料之間的關係,我把它畫出來應該更直觀一些......)
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]; [X, Y] = meshgrid(years, service); % % 三維曲線 % plot3(X, Y, wage) % 三維曲面 figure surf(X, Y, wage) w = interp2(service,years,wage,15,1975);
插值結果為:
w = 190.6288
似乎也並不直觀,尷尬......先這樣,有空了繼續調整,QAQ......吃飯去了......