# Code

## Contents

## Chaos and fractal contributions and toolboxes[edit]

- Francesco Potortì's fractal programs (Octave, GPL): http://fly.cnuce.cnr.it/software/#fractals

## Econometrics[edit]

- Michael Creel's Econometrics notes and octave files: http://pareto.uab.es/mcreel/Econometrics/ (try the Econometrics/MyOctaveFiles directory too)
- Ludwig Kanzler's Econometric software (much of it adapted to Octave):
- http://www2.gol.com/users/kanzler/index.htm#L.%20Kanzler:%20Software
- Licence: "All rights reserved", Unfree for distributing modified versions

## Communications Toolbox[edit]

OctaveForge now contains a fairly complete implementation of a Matlab R13 compatible communications toolbox http://octave.sourceforge.net/communications/index.html. This includes

- Random signal creation/analysis
- Source coding (Quantization, Compand)
- Block coding (BCH, Reed-Solomon)
- Modulations (QASK, PSK, etc)
- Galois fields of even order [i.e. GF(2^m) ]

With a recent version of the OctaveForge installed (version 20030602 or later), online help is available with the command

octave:1> comms info

There are still functions missing or with limitations, and the documentation is not complete. You are therefore welcome to send patches.

### Various Communications-Related Octave Code[edit]

- Simulate multipath fading channels: http://zeidler.ucsd.edu/~sct/code/20060112_multipath/
- Signal processing package in OctaveForge
- Wavelets: LTFAT package in OctaveForge, see additional documentation in the LTFAT web page. Try also Wavelab developed by David Donoho et al. at http://www-stat.stanford.edu/~wavelab/. For more information, see Wavelab on Octave.
- Peter Kovesi's functions for computer vision and image processing: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/

### Data Formats[edit]

A collection of various signal data formats can be found here. Many formats are supported by the BIOSIG-toolbox for Octave and Matlab.

### Speech and Signal Processing Links[edit]

The following packages contain routines that can be made to work with Octave. Sometimes a little effort is required.

- OctaveForge contains a sizable collection of signal and image processing routines
- Alois Schloegl's Time series analysis toolbox is also available at OctaveForge
- Mike Brookes' Voice Box (http://www.ee.ic.ac.uk/hp/staff/dmb/voicebox/voicebox.html)
- University of Sheffield's Matlab Auditory and Speech Demos (http://www.dcs.shef.ac.uk/~martin/MAD/docs/mad.htm)
- Malcolm Slaney's Auditory Toolbox (http://rvl4.ecn.purdue.edu/~malcolm/interval/1998-010/)
- Philip Loizou's COLEA speech analysis toolbox (http://www.utdallas.edu/~loizou/speech/colea.htm)
- Levant Arslans's Speech Processing Toolbox (http://cslr.colorado.edu/software/rspl.html)
- John Hansen's Additive noise sources (http://cslr.colorado.edu/software/rspl.html)
- Dennis Brown's SPCtools (ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/tools/spctools) has code for AR and ARMA modelling, particularly in the spcline subdirectory (Note that the version at mathworks is slightly older).
- Steve Niu's AUDI (ftp://ftp.mathworks.com/pub/contrib/v4/systemid/audidemo.tar) and Arthur Jutan's recursivels (ftp://ftp.mathworks.com/pub/contrib/v4/control/recursivels.tar) for ARMA modelling. AUDI worked well enough for me with a bit of fiddling. Haven't tried recursivels.
- Peter Assmann's Track Draw (http://www.utdallas.edu/~assmann/TRACKDRAW/trackdraw.html) has code for a klatt synthesizer
- Time-Frequency Tool box (http://www-isis.enst.fr/Applications/tftb/iutsn.univ-nantes.fr/auger/tftb.html) from CNRS & Rice has code for AM/FM modulation amongst other cool stuff
- Christophe Couvreur's octave (ftp://ftp.mathworks.com/pub/contrib/v5/signal/octave.tar) has filterbank stuff. Of course the plotting doesn't work, but with a bit of fiddling, you can get, 1/3 octave and 1 octave filter banks to work.
- Mathworks signal processing contributions directories for Matlab 4 (http://www.mathworks.com/support/ftp/signalssv4.shtml) and Matlab 5 (http://www.mathworks.com/support/ftp/signalssv5.shtml)
- University of Vienna's Linear Time-Frequency Toolbox (http://www.univie.ac.at/nuhag-php/ltfat)

The following used to be available:

- Kuo, et. al.'s Speech Signal Processing and Recognition tools (SSPR). A number of the other tools are archived at the same site (http://www.eeng.dcu.ie/~speech5/matspeech.html).

Other Software:

- ESPS has been open sourced (BSD license) and is available at http://www.speech.kth.se/software/. Finally we will have a decent pitch tracker!

## Digital communications in medicine (DICOM)[edit]

There is a DICOM package hosted on sourceforge: more information.

## Adding a quadl like integrator to octave[edit]

quadl is an adaptive quadrature function available in MATLAB (from version 6 I think). It is very fast and accurate and surprisingly it's a small m-file. The algorithm is based on works by Prof. Walter Gander.

Prof. Gander has two m files in his web page http://www.inf.ethz.ch/personal/gander/ which implement his algorithm along with a paper describing the algorithm.

I have not delved deeply into the subject, but the adaptlobe.m function looks equivalent to quadl. Compatibility with MATLAB could be achieved by writing a small quadl wrapper function which simply calles adaptlobe, or by changing adabtlobe's name to quadl.

I have contacted Prof. Gander to allow for distribution of his m-files in octave-forge.

quadl, from the above source is now incorporated into octave-forge-2004-02-12.

## Model transformation tools[edit]

A set of tools for modelling dynamic physical systems using the bond-graph methodology and transforming these models into representations suitable for analysis, control and simulation. These tools use, and generate m files for, GNU Octave.

## Optimization[edit]

There is a variety of code in the octave-forge optimization package http://octave.sourceforge.net/optim/index.html

## Parallelism[edit]

Operating Octave remotely and in parallel

- distributed linear algebra from octave command line via GridSolve
- OctaveForge has a parallel octave, allowing remote commands and data transfer
- OctaveServer allows net connections to Octave
- MPI toolbox for Octave http://atc.ugr.es/javier-bin/mpitb (This is included in a live CD ParallelKnoppix http://pareto.uab.es/mcreel/ParallelKnoppix/ which you can use without installation or configuration)

## Statistics[edit]

### Statistics Functions[edit]

- [ http://www.maths.lth.se/matstat/stixbox/ Stixbox] supports Octave. It has a variety of functions not available in octave/octave-forge such as bootstrap and jackknife estimators and a variety of qq plots. GPL.

- Statbox has some regression functions which are not in Octave. Don't know license or Octave compatibility.

- NaN-toolbox A statistic-toolbox for Octave and Matlab®. It handles data with and without MISSING VALUES. More background information is provided in README

- Dynare is a pre-processor and a collection of MATLAB or SCILAB routines which solve non--linear models with forward looking variables. Cannot find any insight about the license terms, but some code is derived work from GPL code, e.g., [1]. The code is adapted from Anders Holtsberg's matlab toolbox (stixbox).

### Multivariate kernel density estimation[edit]

- wafo/kdetools GPL

- A google search for epanechnikov at the r-project.org site returns several R packages on this subject. They all should be GPL compatible. [2]

- Weka is written in Java, again, don't know how difficult... look for a file called LWL.java

- LTI-Lib is an object oriented library with algorithms and data structures frequently used in image processing and computer vision. LGPL

## Symbolic[edit]

### Symbolic Manipulation[edit]

Octave is a matrix algebra tool, not a symbolic algebra tool, so it cannot perform symbolic operations, such as finding the derivative of sine(x) with respect to x

y = derivative('sin(x)','x'); # Not available in Octave

The below mentioned GiNaC will add symbolic functionality to octave.

### Octave interfaces to GiNaC[edit]

There are two Octave interfaces to GiNaC[1] available

- gino -- http://www.sourceforge.net/projects/mtt (download) provides an Octave interface to GiNaC via ginsh

octave:1> df = g_diff ( "sin(x)" , "x" ) df = cos(x) octave:2> x = pi; eval ( df ); ans = -1

- OctaveForge provides direct access to GiNaC in the symbolic package. Here is a http://wiki.octave.org/wiki.pl?OctaveForgeGNCIntro short tutorial] to get you started.

### Numerical methods[edit]

In some instances, Octave can give reasonable results using numerical methods

- Octave supports numerical derivatives:

t = linspace(0,6,100); y = sin(t); dydt = diff(y) ./ diff(t)

- OctaveForge has other numerical derivative functions.

### Symbolic algebra systems[edit]

Software other than Octave may be more useful for work involving symbolic manipulations

Free software

- Axiom: http://www.nongnu.org/axiom/

- GiNaC/ginsh: http://www.ginac.de

- Maxima: http://maxima.sourceforge.net

- Yacas: http://yacas.sourceforge.net

Non-free software

- Maple: http://www.maplesoft.com

- Reduce: http://www.uni-koeln.de/REDUCE

Note that most of these systems (and Octave!) may be used from within TeXmacs http://www.texmacs.org

A list of some other scientific software is available at http://sal.kachinatech.com/