MATLAB Examples

sodb_interp documentation

The sodb_interp interpolates Southern Ocean Database gridded data to any arbitrary geolocation(s).



[vari,depth] = sodb_interp(sodbvar,lati,loni)
[vari,depth] = sodb_interp(sodbvar,xi,yi)
vari = sodb_interp(...,options)


sodb_interp interpolates from the SODB at the user specified location. A wider variety of output formats are available (In situ and absolute temperature, conservative temperature and thermal driving (temperature difference from the in situ freezing point), which are calculated using the Gibbs Seawater (GSW) TEOS-10 toolbox. Values for output variables are:

   'ptm' potential temperature
   'sal' salinity
   'oxy' oxygen
   'gam' potential density
   'ins' in situ temperature (requires GSW toolbox)
   'abs' conservative temperature (requires GSW toolbox)
   'con' absolute salinity (requires GSW toolbox)
   'dtm' thermal driving, calculated as the temperature above in situ freezing point. (requires GSW toolbox)

[vari,depth] = sodb_interp(sodbvar,lati,loni) returns the interpolated value of the variable sodbvar at the latitude and longitude location(s) specified. lati and loni can be 1x1, 1xn or mxn, but their dimensions must match.

[vari,depth] = sodb_interp(sodbvar,xi,yi) returns the interpolated value of the variable sodbvar at easting,northing location(s) specified in polarstereographic projection. xi and yi can be 1x1, 1xn or mxn, but their dimensions must match.

[vari,depth] = sodb_interp(...,options) calculates the value of sodbvar and the depth where this occurs, with the specified options:

   'max' maximum temperature
   'min' temperature minimum
   'bot' bottom temperature
   'top' temperature at highest SODB depth value (10 m)

Example 1: Vertical profiles

Plot the vertical structure of potential temperature, in situ temperature, and temperature above freezing at (60°S,115°E):

[Tp,Dp] = sodb_interp('ptm',-60,115);
[Ti,Di] = sodb_interp('ins',-60,115);
[Td,Dd] = sodb_interp('dtm',-60,115);

axis tight
box off
xlabel 'temperature ({\circ}C)'
ylabel 'depth (m)'

Example 2: Temperature minimum surface layer

Calculate minimum temperature and corresponding depth of the minimum temperature layer. Below this depth, temperature increases with depth. To get the minimum temperature layer, create a gridded domain in geo coordinates or polar stereographic coordinates and include the 'min' option in sodb_interp.

[x,y] = meshgrid(1.7e6:2e3:3.3e6,-2.1e6:2e3:0);
[tmin,depth] = sodb_interp('ptm',x,y,'min');

Note that sodb_interp automatically determines whether inputs are geo coordinates or ps71 coordinates. So the above will give the same results as

[lat,lon] = ps2ll(x,y);
[tmin,depth] = sodb_interp('ptm',lat,lon,'min');

Let's plot the minimum temperature using pcolorps and the depth of minimum temperature with contourps. I'll also set the colormap to a nice blue gradient with brewermap.

cb = colorbar;
ylabel(cb,'minimum temperature ({\circ}C)')
[C,h] = contourps(lat,lon,depth,'km',0:50:200,'k');
caxis([-2 0.5])
xlabel 'eastings (km)'
ylabel 'northings (km)'

Citing these datasets

If you use SODB data, please cite: Orsi, A. H., T. Whitworth III, Hydrographic Atlas of the World Ocean Circulation Experiment (WOCE). Volume 1: Southern Ocean (eds. M. Sparrow, P. Chapman, and J. Gould), International WOCE Project Office, Southampton, U.K. More info on SODB here:

If you use any of the datasets which use GSW conversions, cite IOC, SCOR and IAPSO, 2010: The international thermodynamic equation of seawater - 2010: Calculation and use of thermodynamic properties. Intergovernmental Oceanographic Commission, Manuals and Guides No. 56, UNESCO (English), 196 pp. More info on GSW & TEOS-10 here:

Author Info:

This function and supporting documentation were written by Chad A. Greene of the Institute for Geophysics at the University of Texas in Austin and David E. Gwyther of the Institute for Marine and Antarctic Studies, University of Tasmania in July 2015.