File Exchange

image thumbnail

Climate Data Toolbox for MATLAB

version 1.01 (107 MB) by Chad Greene
A set of low-level functions and tutorials for analyzing and displaying Earth science data.


Updated 20 Jun 2020

GitHub view license on GitHub

This toolbox contains a standard set of MATLAB functions for analyzing and displaying climate data. The functions are computationally efficient, easy to use, and come with many tutorials that describe not only how to use CDT functions, but also offer guidance on how to interpret the results in the context of Earth science processes.

CDT logo illustration by Adam S. Nelsen (

Cite As

Chad A. Greene, Kaustubh Thirumalai, Kelly A. Kearney, José Miguel Delgado, Wolfgang Schwanghart, Natalie S. Wolfenbarger, Kristen M. Thyng, David E. Gwyther, Alex S. Gardner, and Donald D. Blankenship. The Climate Data Toolbox for MATLAB. Geochemistry, Geophysics, Geosystems 2019. doi:10.1029/2019GC008392

Comments and Ratings (46)

It did work! Thank you

Chad Greene

@César: Oh, I see! It helps that you included the error message and your release number! I think this is the issue: Something called implicit expansion was introduced in R2016b. Since you're using 2015a you'll need to change line 237 to

Ac = bsxfun(@plus,Ac,meanAr);

Hope that helps.

Hello Chad, I am trying to obtain climatology from 3D model data and I am obtaining the following error using climatology:
timec 4015x1 32120 double
usc 367x512x4015 6035476480 double
[us_clim,tc] = climatology(usc,timec', 'daily');
Error using +
Matrix dimensions must agree.

Error in climatology (line 237)
Ac = Ac + meanAr;

I tried to run the example for Pacific Ocean SST and the script produces the same error! I am using MATLAB Version: (R2015a)

Omar Nawaz

Ze Meng

Min Li

Andreas Reul

Thank you for the very helpfull toolbox!!!!!!!.
An example for complex EOF or something similar for current U and V EOF would be helpfull,

Darwin Cai

Carrie Merritt

Vince Clementi

Ashneel Chandra


Can I use this eof function for doing Complex EOF analysis (for wind vector) by just providing the input in complex form (U +iV).
My interest is in doing eof analysis for wind vector.

Ricardo Chevarria

Wentao Lv

Sandy Herho

jy Li


li xin

Thanks so much for this toolbox

Chad Greene

@S: Thanks for the note! The globefill function solves the issue of transparent globes.


Hi Chad,
Thanks for this helpful toolbox
I think the globeborders function is not working as intended, the surface seems to be transparent and shows the borders on the otherside of the hemisphere as well.

YI Chen

Naomi Krauzig

Hi2world Chu

Naomi Krauzig

Clare Ostle

Brian Haynes

How does the EOF program handle cyclic data at the poles? There is a large value discontinuity at the Prime Meridian, even when addressing the boundary condition prior to using the function, and the equal-area gridding used with datasets like CFSR, NCEP-NCAR, etc means the concentraion of data increaes with latitude.

Nicole Paloschi

jianzu hu


Mthetho Sovara

Shahar Grossbard

Leo Huang

shravan patil



Nick Hitt

Sina Khatami


Thank you so much Chad. I managed to get the updated version of trend fuction

Chad Greene

@Franck: That should work fine as long as the input t is a 1D array of length 288. If you type

cdt deseason

do you have any trouble running the examples?

Feel free to send me a personal email if you have a simple example I can run to recreate the problem.

Franck Eitel

@chad: this is the dimension of slp 33x17x288 (lon,lat,time)

Chad Greene

@Franck: What are the dimensions of the slp grid, and what are the dimensions of the time array?

Franck Eitel

Nice Job/toolbox Chad.
I would like to know how can I use deseason to remove seasonal cycles from the 3d grid slp(lon,lat,time) dataset.
I have tried to follow up your instruction but didn't succeed "Error: length of t must match dimensions of

Fernan Saenz


Aidan Starr



Documentation updates.

MATLAB Release Compatibility
Created with R2018b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired: COVID19