matlab读取idl的变量,matlab - IDL和MatLab从NetCDF文件中获取奇怪的值 - 堆栈内存溢出...

我有一个NetCDF文件,其中包含代表几个月来全球范围内总降水量的数据(因此将其存储在三维数组中)。 我首先确保数据在XConv和ncdump中都是合理的,并确保了数据的形成方式。 一切看起来都很明智-值从很小(〜10 ^ -10-有意义,因为这是模型数据,有效地表示零)到大约5x10 ^ -3。

当我尝试在IDL或MatLab中处理此数据时,问题就开始了。 这些程序中生成的数组充满了巨大的负数,例如-4x10 ^ 4,偶尔有巨大的正数,例如5000。奇怪的是,查看MatLab中数据的经度和纬度(在特定时间),降雨的模式看起来很合理,但这些值完全是错误的。

在IDL中,我正在读取文件以将其写入文本文件,以便可以由某些使用非常基本的文本文件的软件来处理。 这是我正在使用的代码:

PRO nao_heaps

address = '/Users/levyadmin/Downloads/'

file_base = 'output'

ncid = ncdf_open(address + file_base + '.nc')

MONTHS=['january','february','march','april','may','june','july','august','september','october','november','december']

varid_field = ncdf_varid(ncid, "tp")

varid_lon = ncdf_varid(ncid, "longitude")

varid_lat = ncdf_varid(ncid, "latitude")

varid_time = ncdf_varid(ncid, "time")

ncdf_varget,ncid, varid_field, total_precip

ncdf_varget,ncid, varid_lat, lats

ncdf_varget,ncid, varid_lon, lons

ncdf_varget,ncid, varid_time, time

ncdf_close,ncid

lats = reform(lats)

lons = reform(lons)

time = reform(time)

total_precip = reform(total_precip)

total_precip = total_precip*1000. ;put in mm

noLats=(size(lats))(1)

noLons=(size(lons))(1)

noMonths=(size(time))(1)

; the data may not be an integer number of years (otherwise we could make this next loop cleaner)

av_precip=fltarr(noLons,noLats,12)

for month=0, 11 do begin

year = 0

while ( (year*12) + month lt noMonths ) do begin

av_precip(*,*,month) = av_precip(*,*,month) + total_precip(*,*, (year*12)+month )

year++

endwhile

av_precip(*,*,month) = av_precip(*,*,month)/year

endfor

fname = address + file_base + '.dat'

OPENW,1,fname

PRINTF,1,'longitude'

PRINTF,1,lons

PRINTF,1,'latitude'

PRINTF,1,lats

for month=0,11 do begin

PRINTF,1,MONTHS(month)

PRINTF,1,av_precip(*,*,month)

endfor

CLOSE,1

END

任何人都有想法,为什么我在MatLab 和 IDL中得到如此奇怪的值?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值