A Miscelleny of Matlab programs for use in the course MAPH 40260

DYNAMO: A one-dimensional Primitive Equation Model: Technical Note TN44 (PDF).

Ana_T500: A simple Optimal Interpolation (OI) code: Ana_T500.m

[Vortex] Temperature Advection in Fixed Vortex: Vortex.m.
Analytical Solution: AnalyticalVortex.m.
Technical Paper by Charles A Doswell: JAS, April, 1984, 1242-1248.

Shallow Water Model "SLAM": slam.m

Barotropic Potential Vorticity Equation: BPVE.m

Integrate 1D Advection Equation (simple exercise): Advection_1D.m

Computational Phase Speeds for Explicit and Implicit Schemes: CcompOverCphys.m

Class Exercise: Estimate Temperature and Pressure. Temp_Pres_Stats.m

Simple Least Squares Line-Fitting Program. Fitline2points.m

Simple Parabolic fit to data. Paranalyse.m

Simple Program to plot 03953 ascent. PlotAscent.m

Simple Program to rotate plot through various angles. Rotate45.m

Group Velocity

Group Velocity 0    gv0.m
Group Velocity 1    gv1.m
Group Velocity 2    gv2.m

Miscellaneous Functions

Poisson Solver. Numerical Recipes: §19.0
Poisson Solver. Numerical Recipes: §19.4

Numerical Meteorology: MatLab Tutorials & Code

  • Tutorial 1    Matlab1.pdf
  • Tutorial 2    Matlab2.pdf
  • Tutorial 3    Matlab3.pdf
  • Tutorial 4    Matlab4.pdf
  • Tutorial 5    Matlab5.pdf
  • Tutorial 6    Matlab6.pdf
  • Code (tar files)
  • Linear Advection
  • FTCS Scheme    
  • Burgers' Equation

  • Basic Notes to Help You Get Started

    Download the notes here.
                Getting Started with Matlab 
      (Peter Lynch, UCD Meteorology & Climate Centre)
    These are basic notes to help you get started.
    The best way to learn MATLAB is to start using it.
    How to begin:
    	(1) Double-click on the MATLAB icon.
    	Type "matlab &" at prompt
    How to stop:
    >> quit or >> exit (where >> is the prompt).
    At the beginning, enter
    	>> helpdesk
    This will open a window with extensive documentation.
    Click on 'Getting Started' for an outline description.
    To see more MATLAB examples, select
    Examples and Demos 
    under the menu, or type 
    	>> demo
    at the MATLAB prompt.  From the menu displayed, run
    the demos that interest you, and follow the
    instructions on the screen. 
    There are two ways to use MATLAB:
    (1) Interactively, where you type commands for
    immediate execution, or 
    (2) M-files, containing sets of commands.
    We start with the interactive use.
    (1) Examples of Interactive use of MATLAB.
    Variables, Vectors, Matrices
    Variables have names beginning with a letter. They are
    case-sensitive. Thus 'Geopotential' and 'geopotential'
    are different. They are given values by statements
    	>> Geopotential = 5564
    The value is echoed by MATLAB.
    To suppress it, end the command with a semi-colon;
    	>> Geopotential = 5564;  %  No Echo.
    Type declarations and dimension statements are
    not required in MATLAB.
    Some numbers are pre-defined. For example, try
    	>> pi     or     >> i
    to see this.
    Expressions are mostly self-explanatory, e.g.:
    	>> phi = (1+sqrt(5))/2
    Vectors are defined thus:
    	>> rowvec = [ 1, 2, 3 ];
    	>> colvec = [ 2; 3; 5 ];
    	>> rowvec*colvec
    gives 23    and
    	>> colvec*rowvec
    gives a 3 by 3 matrix:
         2     4     6
         3     6     9
         5    10    15
    Now try
    	>> rowvec*rowvec
    You get
    	??? Error using ==>> *
    Inner matrix dimensions must agree.
    To operate on vectors or matrices component by
    component, precede the operator by a dot. Thus:
    	>> rowvec.*rowvec
    gives the vector with squares of the components:
       1   4   9
    You can get the sum of the components
    	>> sum(rowvec);
    or the mean value
    	>> mean(rowvec);
    or the standard deviation
    There are many other statistical functions.
    Matrices are defined like this
    	>> amat = [ 1, 2, 3; 4, 5, 6; 7, 8, 10]
         1     2     3
         4     5     6
         7     8    10
    We get the inverse using 
    	>> ainv = inv(a)
    Check that
    	>> amat*ainv
    gives the 3 by three identity matrix.
    The transpose of amat is amat'. Be careful: if amat 
    is complex, this is the hermitian conjugate.
    Components of amat are indicated in an obvious way:
    	>> amat(3,2) = 8.
    Try other combinations yourself.
    Ranges: The colon operator
    A range of numbers is defined by the colon operator.
    For example,
    	>> 1:6 gives
      1  2  3  4  5  6
    The interval need not be 1:
    	>> 1:3:12 gives
      1  4  7  10
    Or the series can go backwards.
    	>> 8:-3:-5 gives
      8  5  2 -1 -4
    The colon by itself refers to all the elements in a
    row or column of a matrix. So
    	>> amat(:,2) 
    is the second column and
    	>> amat(3,:) is the third row.
    	>> linspace(0,pi,101)
    generates a sequence of 101 numbers, evenly spaced
    between zero and pi.o
    MATLAB has extensive facilities for displaying
    vectors and matrices as graphs, as well as annotating
    and printing these graphs.
    For a start, try the following:
    	>> t = 0:pi/100:2*pi; 
            >> x = sin(t); y = cos(t);
    	>> plot(t,x); hold on; plot(t,y);
    The two graphs can also be plotted together:
    	>> plot(t,x,t,y);
    You can also plot functions of variables:
    	>> plot(t,x,'b');
            >> hold on; 
            >> plot(t,x.*x,':r');
    Try other combinations yourself!
    To open a new graphics window, type
    	>> figure
    Subplots are easy. Try the following:
    	>> subplot(2,2,1); plot(t,x)
    	>> subplot(2,2,2); plot(t,y)
    	>> subplot(2,2,3); plot(t,x.*x)
    	>> subplot(2,2,4); plot(t,y.*y)
    A title can be added, and axes labelled in an obvious way:
    	>> title('My first plot')
    	>> xlabel('time'); ylabel(' sin(t)');
    Getting Help
    Help for a specific function can be obtained.
    For example,
    	>> doc sqrt
    gives the HTML documentation on the square root
    Flow Control
    Flow through a script can be controlled in several
    ways.  We consider only the simplest example of
    a for-loop:
    	>> factorial(1)=1;
    	>> for n=2:10
    	>>  factorial(n)=factorial(n-1)*n;
    	>> end
    	>> y=factorial
    will echo the value of n! with n going from 1 to 10.
    [Purists say you should avoid for-loops,
    but they are often useful.]
    (2) M-Files
    You can create your own programs using M-files, which
    are text files containing MATLAB code. Just create a 
    file containing the same statements you would type at
    the MATLAB command line. Save the file under a name
    such as bobo.m that ends with the extension .m.
    You can use the MATLAB editor by typing
    	>> edit bobo
    to edit an existing file.
    It is convenient to keep the edit window open while
    running the MATLAB program. For testing, you can
    then switch back and forward easily between running
    and editing.
    Look through the online documentation to get a
    general idea of the extensive assistance available.