Join our team! We are hiring a Senior Software Developer!
Matlab 2012a Includes OPeNDAP Support
Matlab 2012a Includes Built-in Support for OPeNDAP!
Matlab 2012a was released on March 1 and includes the netcdf 4.1.2 library with OPeNDAP support turned on! This means that any OPeNDAP-served dataset that can be read with common netcdf applications (Panoply, Ferret, GrADS, IDV, …) can now be read using Matlab.
The interface supported is based on the netCDF API, with some nice tweaks for Matlab’s scripting language. To get help on the netcdf interface, type ‘help netcdf’ at the Matlab prompt. The response is a summary with links to more information about netCDF suite of Matlab operations. Here’s an example of a simple data access (note that the underlying file happens to be an HDF4 file, compressed with gzip – it could be anything OPeNDAP can serve):
% To open a remote dataset, use its URL: modis=’http://test.opendap.org/dap/data/hdf/MOD08_D3.A2001153.003.2001207172930.hdf.gz’;
ncid = netcdf.open ( modis );
% If you don’t know what it contains, start by using the ‘netcdf.inq’ operation: [numdims,numvars,numglobalatts,unlimdimid] = netcdf.inq(ncid);
% How many variables are there? >> numvars numvars = 666
% Lets look at the fourth variable: [name,xtype,dimids,natts] = netcdf.inqVar(ncid,3); >> name
name = mod08.Data%20Fields.Scattering_Angle_Maximum
% Now lets get values for ‘Scattering_Angle_Maximum’
>> data = netcdf.getVar(ncid,3);
>> data
data = Columns 1 through 22
-9999 11924 12044 12135 12226 12298 12386 12513 12619 12712 12820…
-9999 11942 12037 12128 12220 12313 12413 12518 12612 12720 12820…
-9999 11899 12019 12121 12214 12299 12418 12511 12621 12721 12823…
…
% How about subsetting and sampling those data? This pulls values at indices 2, 7 to indices 12, 15.
>> subsampled_data = netcdf.getVar(ncid, 3, [2,7],[10,8]);
>> subsampled_data
subsampled_data =
12511 12621 12721 12823 12916 13000 13077 13142
12521 12623 12727 12819 12909 12989 13055 13108
12524 12630 12724 12817 12900 12975 13032 13142
12525 12622 12721 12810 12889 12959 13056 13167
12533 12629 12725 12803 12878 12962 13071 13173
12533 12626 12712 12794 12875 12984 13091 13189
12531 12623 12705 12784 12889 12989 13106 13210
12523 12621 12708 12790 12896 13005 14806 13219
12529 12615 12938 12803 12911 13014 13117 13223
12525 12608 12711 12819 12914 13024 13124 13222
This quick demo just scratches the surface of what the inteface can do! And, of course, you can use it to read local files if you have those as well. 😉