Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-03-06
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]()
我用二维插值,但是插值后的范围比原来的大,程序见下
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 |
![]() |
![]() |
![]() |
#2 |
高级会员
注册日期: 2008-11-07
住址: 湖南长沙
帖子: 233
声望力: 21 ![]() |
![]()
你把cubic改成nearest试试,不用双三次插值,减少边界条件。
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2009-03-06
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]()
谢谢,我现在把cubic改成nearest 就行了
edc(:,:,i)=interp2(x,lat94,ed(:,:,i),xxi,yyi,'nearest',2);就成功了,没有NaN了,matlab 多谢laosam280 |
![]() |
![]() |