爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8080|回复: 12

[程序设计] MATLAB关于四维EC资料插值问题求教!初学者

[复制链接]

新浪微博达人勋

发表于 2014-6-24 15:29:20 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
我下载的EC的资料'Temperature是四维资料(lon,lat,lev,time),经纬度是从33N-39N,115E-125E,0.25*0.25,0.0KM--10KM30层,时间维数为180天,请问我要是想插值到36.7N,117.3E,垂直层为60层,我该怎么写程序,我是matlab的初学者,请大家帮帮我!万分感谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-6-24 15:30:38 | 显示全部楼层
盼望着,盼望着,盼望着您能指点我这段代码
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-24 15:31:56 | 显示全部楼层
为楼主工作量堪忧,目测俺木有简单快捷的方法,坐等大神的出现
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 32430
发表于 2014-6-24 18:43:11 | 显示全部楼层
差值的算法就有很多种,主要是找算法,剩下的编程其实本身不难……
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-6-25 09:20:01 | 显示全部楼层
我今早刚睡醒,想了想是不是这样处理,请各位高手给看看:
%i=经度维数计数器;j=维度计数器;k=垂直层数计数器;t=时间维数
station=double(ones(length(lev),length(time));
for t=1:length(time)
   for k=1:length(lev)
       station(k,t)=interp2(lon,lat,temperature(:,:,k,t),117.3,36.7,'spline');
   end
end


不知道这样写对不

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-6-25 09:22:07 | 显示全部楼层
再附上我的变量属性,大家帮我解答下啊


Variables:
    longitude
           Size:       41x1
           Dimensions: longitude
           Datatype:   single
           Attributes:
                       units     = 'degrees_east'
                       long_name = 'longitude'
    latitude
           Size:       25x1
           Dimensions: latitude
           Datatype:   single
           Attributes:
                       units     = 'degrees_north'
                       long_name = 'latitude'
    level   
           Size:       31x1
           Dimensions: level
           Datatype:   int32
           Attributes:
                       long_name = 'model_level_number'
    time     
           Size:       184x1
           Dimensions: time
           Datatype:   int32
           Attributes:
                       units     = 'hours since 1900-01-01 00:00:0.0'
                       long_name = 'time'
    t        
           Size:       41x25x31x184
           Dimensions: longitude,latitude,level,time
           Datatype:   int16
           Attributes:
                       scale_factor  = 0.00153
                       add_offset    = 257
                       _FillValue    = -3.28e+04
                       missing_value = -3.28e+04
                       units         = 'K'
                       long_name     = 'Temperature'
                       standard_name = 'air_temperature'
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-6-25 16:05:35 | 显示全部楼层
你不是还要把垂直方向差值成60层吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-6-25 16:10:12 | 显示全部楼层
我想先水平插值,再垂直插值!有好心人请指导下我,我QQ:123744035
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-6-26 10:42:40 | 显示全部楼层
是不是得用griddata函数啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-6-26 10:43:43 | 显示全部楼层
for i=1:t
dyt=griddata(double(lon'),double(lat'),h_ec,double(temp(:,:,:,i)),118.67,37.43,h_rm,'linear');
end
h_ec=[11.29 10.42 9.59 8.81 8.08 7.38 6.71 6.09 5.50 4.94 4.42 3.94 3.48 3.06 2.67 2.31 1.98 1.68 1.41 1.17 0.95 0.76 0.60 ...
     0.46 0.34 0.24 0.16 0.10 0.06 0.03 0.01].*1000;

h_rm=[0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50 0.60 0.70 0.80 0.90 1.00 1.10 1.20 1.30 1.40 1.50 1.60 1.70 1.80 1.90 2.00 ...
    2.25 2.50 2.75 3.00 3.25 3.50 3.75 4.00 4.25 4.50 4.75 5.00 5.25 5.50 5.75 6.00 6.25 6.50 6.75 7.00 7.25 7.50 7.75 8.00 8.25 8.50 ...
    8.75 9.00 9.25 9.50 9.75 10.00].*1000;
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表