查看单个帖子
旧 2009-04-01, 12:29   #1
baobaoniou2006
初级会员
 
注册日期: 2009-03-06
年龄: 39
帖子: 2
声望力: 0
baobaoniou2006 正向着好的方向发展
默认 求助 关于二维插值外推

我用二维插值,但是插值后的范围比原来的大,程序见下
x=0:1.875:360;
load lat94.txt;%这是插值前y的范围从-88.5到88.5
xi=0:2.5:360;
yi=[-90:2.5:90]';%这是插值后y的范围从-90到90
[xxi,yyi]=meshgrid(xi,yi);
edc=zeros(73,145,240);
for i=1:240;
edc(:,:,i)=interp2(x,lat94,ed(:,:,i),xxi,yyi,'cubic');

end;
这样做出来的结果edc(:,1,1)

ans =

1.0e+003 *

NaN
0.0784
0.0919
0.0853
0.0787
0.0731
0.0976
0.2313
0.4375
0.5698
0.5868
0.5908
0.5982
0.6187
0.6610
0.7209
0.8156
0.9341
1.0633
1.2234
1.4218
1.6494
1.8130
1.9300
2.0274
2.1140
2.1784
2.2191
2.2508
2.2565
2.2959
2.3457
2.3935
2.5437
2.7362
2.8530
2.8941
3.0696
2.8803
1.6095
0.9147
0.6190
0.4362
0.4206
0.4908
0.5568
0.5781
0.6193
0.6414
0.7026
0.8417
1.0165
0.8376
0.7446
0.7999
0.7976
0.8364
0.7390
0.7735
0.7572
0.7314
0.6851
0.6047
0.5312
0.4898
0.4414
0.3704
0.2202
0.0655
0.0427
0.0517
0.0552
NaN
然后我用 for i=1:240;
edc(:,:,i)=interp2(x,lat94,ed(:,:,i),xxi,yyi,'cubic','extrapval');

end;
??? Error using ==> interp2
EXTRAPVAL must be numeric.
就是在interp2函数里面加了一个'extrapval',显示错误
好像'extrapval‘必须是数字,我问别人,她说你外推多少就写多少个数字
然后我把程序改为for i=1:240;
edc(:,:,i)=interp2(x,lat94,ed(:,:,i),xxi,yyi,'cubic',1);

end;
得到的结果还是edc(:,1,1)

ans =

1.0e+003 *

NaN
0.0784
0.0919
0.0853
0.0787
0.0731
0.0976
0.2313
0.4375
0.5698
0.5868
0.5908
0.5982
0.6187
0.6610
0.7209
0.8156
0.9341
1.0633
1.2234
1.4218
1.6494
1.8130
1.9300
2.0274
2.1140
2.1784
2.2191
2.2508
2.2565
2.2959
2.3457
2.3935
2.5437
2.7362
2.8530
2.8941
3.0696
2.8803
1.6095
0.9147
0.6190
0.4362
0.4206
0.4908
0.5568
0.5781
0.6193
0.6414
0.7026
0.8417
1.0165
0.8376
0.7446
0.7999
0.7976
0.8364
0.7390
0.7735
0.7572
0.7314
0.6851
0.6047
0.5312
0.4898
0.4414
0.3704
0.2202
0.0655
0.0427
0.0517
0.0552
NaN
然后我又把外推的范围设置为2
也是这个 结果不知道怎么设置,我插值后的结果 边界上才不会是NaN
baobaoniou2006 当前离线   回复时引用此帖