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

### 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

 Tutorials 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

```====================================================

Getting Started with Matlab
===========================
(Peter Lynch, UCD Meteorology & Climate Centre)

====================================================

Introduction
============

The best way to learn MATLAB is to start using it.

How to begin:
(1) Double-click on the MATLAB icon.
OR
(2)
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
>> 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.

====================================================

(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
like
>> 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 ];
Then
>> 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.

IMPORTANT:
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
>>std(rowvec);
There are many other statistical functions.

Matrices are defined like this
>> amat = [ 1, 2, 3; 4, 5, 6; 7, 8, 10]
giving
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

Graphics
========

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
function.

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
Then
>> 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.

****************************************************
====================================================
```