Trouble loading data from .nc file
3 次查看(过去 30 天)
显示 更早的评论
Hi,
This is my first time trying to pull data from an netCDF file using MATLAB. I'm having difficulty pulling data from this file below:
url = 'http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis/pressure/hgt.1968.nc';
This is a file that basically should have the "thickness" (height) of the atmosphere at certain: levels (different from height), latitude, longitude and time. When I use netcdf.getVar(ncid, var) I can get data about each of those 4 variables but not the thickness data itself... does that make sense?
Anyways, any help is appreciated and sorry in advance if this seems vague b/c I don't know where to start.
Thanks!
0 个评论
采纳的回答
Kelly Kearney
2013-11-12
What version of Matlab are you running? They've introduced some nice higher-level reading and writing functions in more recent versions (R2010 and above, I think). You should be able to get the data quickly via ncread. Based on the file details:
ncdisp(url, '/', 'min')
Source:
http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis/pressure/hgt.1968.nc
Format:
64bit
Variables:
level
Size: 17x1
Dimensions: level
Datatype: single
lat
Size: 73x1
Dimensions: lat
Datatype: single
lon
Size: 144x1
Dimensions: lon
Datatype: single
time
Size: 1464x1
Dimensions: time
Datatype: double
hgt
Size: 144x73x17x1464
Dimensions: lon,lat,level,time
Datatype: int16
you might not want to read in that whole variable all at once (b/c it has a scale factor and offset, it will be read in as a double array). To get one slice at time 1 and level 1:
x = ncread(url, 'hgt', [1 1 1 1], [Inf Inf 1 1]);
2 个评论
Kelly Kearney
2013-11-12
The ncread function allows you to specify the start, count, and stride values to read certain subsets along each dimension. hgt is a 4-dimensional lat x lon x level x time variable, so I requested that the read start on the first index of each of these 4 dimensions; for the first two dimensions, Inf indicates to read until the end of that dimension, and for the latter 2 I only chose to read a single value (resulting in a 144 x 73 x 1 x 1 array).
Regarding the values, according to the attributes, it looks like those values are as intended:
>> ncdisp(url, 'hgt')
Source:
http://www.esrl.noaa.gov/psd/thredds/dodsC/Datasets/ncep.reanalysis/pressure/hgt.1968.nc
Format:
64bit
Dimensions:
lon = 144
lat = 73
level = 17
time = 1464 (UNLIMITED)
Variables:
hgt
Size: 144x73x17x1464
Dimensions: lon,lat,level,time
Datatype: int16
Attributes:
long_name = '4xDaily Geopotential height'
actual_range = [-5.55e+02 3.24e+04]
unpacked_valid_range = [-7.00e+02 3.50e+04]
units = 'm'
add_offset = 3.21e+04
scale_factor = 1
missing_value = 3.28e+04
precision = 0
least_significant_digit = 0
GRIB_id = 7
GRIB_name = 'HGT'
var_desc = 'Geopotential height'
dataset = 'NMC Reanalysis'
level_desc = 'Multiple levels'
statistic = 'Individual Obs'
parent_stat = 'Other'
valid_range = [-3.28e+04 2.93e+03]
Perhaps these are geopotential height anomalies instead of absolute values?
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 NetCDF 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!