baobaoniou2006
2009-04-01, 12:29
我用二维插值,但是插值后的范围比原来的大,程序见下
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
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