Home Page

Software

email

Matlab and C Radar Toolbox

Matlab is a very powerful programming and command-line language that is ideal for processing radar data. It handles complex datatypes naturally and now uses industry standard numerical libraries.
The toolbox routines were tested on Matlab version 6.5(R13) for GNU/Linux, Windows 2000 and Solaris. In principle, with minor modification, they should run on any version greater than V5.0 under any supported operating system, and with no additional toolboxes - please mail me if you find any problems. Some speed-critical routines are coded in C, linked to Matlab via a MEX interface. Binary .mexglx (GNU/Linux) , .dll (Windows 2000 onwards) and .mexsol (Solaris) files have been provided. All source code is present with a basic `makefile' so it should compile on other platforms (such as OS X) using gcc, although this has not been tested.

What Can Be Done?

The code is a work in progress, and I would appreciate any bug reports, comments or suggestions.
It provides a set of free radar tools to process, simulate and analyse signal and image data. It is especially useful for polarimetric radar such as the NASA/JPL AirSAR. There are many functions, including a MEX interface to a general statistics library, but the following methods are used in demonstration programs:

- Open, decompress and correct AirSAR files (compressed Stokes Matrix format) in old or new format.
- Generate random fully polarimetric samples with arbitrary covariance matrices.
- Theoretical polarimetric distributions such as coherence, phase and intensity ratios.
- Maximum likelihood segmentation of multi-frequency, polarimetric data.
- Automatic polarimetric classification based on Expectation Maximisation of the Wishart distribution.
- Calculation of optimum classification accuracy between polarimetric classes.
- Generate correlated gamma random samples with desired correlation.
- K distribution generation, estimation and theory (with optional thermal noise).
- Weibull distribution generation, estimation and theory.
- Target detection theory based on Swerling models.
- Theoretical performance analysis for CA, CAGO, CASO, OS and TM Constant False Alarm Rate processors.
- CA, CAGO, CASO, OS and TM CFAR processors available as fast mex code.
- Change detection theory for homogenous speckle fields.
- General statistical functions for exponential, gamma, Weibull, F distribution, K distribution and K-distribution in thermal noise.

Instructions for use (one big page)

Online Help (included in toolbox download)

Toolbox demo programs (with screenshots)

Take me to the download (with changelog)

Before You Begin

Most of the code has been prepared and commented in my own time. Similar to any academic publication, if you use it I would appreciate an acknowledgement in some way to Glen Davidson at www.radarworks.com . Any derivative work must retain the file headers. It is provided in good faith, but bugs are always present in any software - the onus is on you to check the routines do what you want. Error checking is kept to a minimum in the m files as they all follow the GIGO principle (Garbage In, Garbage Out) so please check the format for input and output in the relevant web pages/headers/instructions.
The C/MEX files have a reasonable amount of error checking to prevent needless crashing, but Matlab will usually allow you to save your session even after a MEX crash. Of course if you pass empty arrays, Infs, Nans, structures, or incorrectly pass real/complex arrays then the results are indeterminate.

Memory Requirements

The numerical functions, file operations and simulation routines can function in a basic Matlab environment of 64MB. For processing radar data you need lots of memory, none of the programs use `tiling' routines, but memory is so cheap now you should have a minimum of 512MB to do serious work.

Microsoft Windows vs Linux

Some of the C processing routines allocate and destroy memory very aggressively (outside of Matlab for speed). Windows 95/98/Me do not handle memory efficiently, Windows 2000 and XP are much better but blue screens are still a weekly experience.
Why not try Linux? It's faster, has free compilers, is very stable and has almost no viruses. It's got Mathematica as well and the publishers of Matlab (Mathworks) will even let you use a single Matlab license on a dual-boot machine. Also, Intel now produce a free (non-commercial) optimised Linux compiler that can almost double the speed of floating point routines on an Intel P4 using the SSE2 instructions. Other useful open-source software includes LaTeX, The Gimp, mozilla and OpenOffice all under Linux and Windows.