将数据插值到交错网格

时间:2012-03-25 20:28:58

标签: matlab interpolation

我有25点这样的数据:

Z =

0.6840    0.7208    1.0240    1.0293    0.7713
0.8602    0.9089    1.3414    0.8970    0.7107
0.8869    0.8282    1.7015    0.9967    0.9243
0.7469    0.9534    1.5206    1.2741    1.0281
0.8952    1.1554    0.8525    1.2993    0.9890

pcolor(Z)=

enter image description here

Pcolor插入数据以形成颜色,但不会给我每个新方块的值。我想通过interpolation手动执行此操作:

我想平均这些粉红点以在每个方格的中心处进行插值,即蓝色数字。

enter image description here

这似乎没有那样做。

x=1:5;
y=1:5;

xi=0.5:1:5;
yi=0.5:1:5;
ZI=interp2(x,y,Z,xi,yi);

给出: ZI =

0.8918    1.0778    0.8194       NaN       NaN
0.9084    1.3375    0.8967       NaN       NaN
1.0035    1.5858    0.8852       NaN       NaN
1.1633    1.4250    1.0040       NaN       NaN
   NaN       NaN       NaN       NaN       NaN

任何指针都会受到赞赏, 的问候,

1 个答案:

答案 0 :(得分:2)

目前尚不清楚是否需要超采样矩阵或仅需要插值。如果是后者,你可以简单地做:

 Z = [ 0.6840 ,   0.7208   , 1.0240   , 1.0293  ,  0.7713;
       0.8602  ,  0.9089  ,  1.3414  ,  0.8970  ,  0.7107;
       0.8869  ,  0.8282  ,  1.7015  ,  0.9967  ,  0.9243;
       0.7469  ,  0.9534  ,  1.5206  ,  1.2741  ,  1.0281;
       0.8952  ,  1.1554  ,  0.8525  ,  1.2993  ,  0.9890];

 Z1 = (Z(1:end-1,1:end-1)+Z(2:end,1:end-1)+Z(1:end-1,2:end)+Z(2:end,2:end))/4

ans =

   0.79348   0.99877   1.07293   0.85208
   0.87105   1.19500   1.23415   0.88218
   0.85385   1.25093   1.37322   1.05580
   0.93773   1.12047   1.23662   1.14762

或者如果你真的想使用interp2函数:(我使用5x4矩阵,这样它更有启发性)

 Z = [ 0.6840 ,   0.7208   , 1.0240   , 1.0293  ,  0.7713;
       0.8602  ,  0.9089  ,  1.3414  ,  0.8970  ,  0.7107;
       0.8869  ,  0.8282  ,  1.7015  ,  0.9967  ,  0.9243;
       0.7469  ,  0.9534  ,  1.5206  ,  1.2741  ,  1.0281]

   interp2(Z,[1:4 ]+0.5,[1:3]'+0.5) 

   0.79348   0.99877   1.07293   0.85208
   0.87105   1.19500   1.23415   0.88217
   0.85385   1.25093   1.37322   1.05580

(在Octave测试)