Code: Difference between revisions

From Octave
Jump to navigation Jump to search
(Update description of dynare)
 
(15 intermediate revisions by 8 users not shown)
Line 2: Line 2:
*Francesco Potortì's fractal programs (Octave, GPL): http://fly.cnuce.cnr.it/software/#fractals
*Francesco Potortì's fractal programs (Octave, GPL): http://fly.cnuce.cnr.it/software/#fractals


==Ecnometrics==
==Econometrics==
*Michael Creel's Econometrics notes and octave files: http://pareto.uab.es/mcreel/Econometrics/ (try the Econometrics/MyOctaveFiles directory too)
*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):
* Ludwig Kanzler's Econometric software (much of it adapted to Octave):
**http://www2.gol.com/users/kanzler/index.htm#L.%20Kanzler:%20Software
**http://www2.gol.com/users/kanzler/index.htm#L.%20Kanzler:%20Software
**Licence: "All rights reserved", Unfree for distributing modified versions
**Licence: "All rights reserved", Unfree for distributing modified versions
*[http://www.dynare.org Dynare] is a software platform for handling a wide class of economic models, in particular dynamic stochastic general equilibrium (DSGE) and overlapping generations (OLG) models. Licensed under GNU GPL (v3 or later). Consists of a pre-processor (in C++) and of a collection of Octave/Matlab routines.


==Communications Toolbox==
==Communications Toolbox==
Line 21: Line 22:
There are still functions missing or with limitations, and the documentation is not complete. You are therefore welcome to send patches.
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==
===Various Communications-Related Octave Code===
*Simulate multipath fading channels: http://zeidler.ucsd.edu/~sct/code/20060112_multipath/  
*Simulate multipath fading channels: http://zeidler.ucsd.edu/~sct/code/20060112_multipath/
*Signal processing package in [http://octave.sourceforge.net/signal/index.html OctaveForge]
*Wavelets: LTFAT package in [http://octave.sourceforge.net/ltfat/ OctaveForge], see additional documentation in the [http://ltfat.sourceforge.net/doc/wavelets/index.php 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===
A collection of various signal data formats can be found [http://www.dpmi.tu-graz.ac.at/~schloegl/matlab/eeg/ here]. Many formats are supported by the [http://biosig.sf.net/ BIOSIG]-toolbox for Octave and Matlab.
 
===Speech and Signal Processing Links===
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)==
==Digital communications in medicine (DICOM)==
At an early development stage. [http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/dicom/ octave-forge svn]
There is a DICOM package hosted on sourceforge: [[dicom | more information]].
*Maintainer: Andy Buckle [http://sourceforge.net/sendmessage.php?touser=1760416contact]  
 
*Currently worked on by: Kris Thielemans
==Adding a quadl like integrator to octave==
 
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==
http://mtt.sourceforge.net
 
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==
There is a variety of code in the octave-forge optimization package http://octave.sourceforge.net/optim/index.html
 
==Parallelism ==
Operating Octave remotely and in parallel
*distributed linear algebra from octave command line via [http://icl.cs.utk.edu/netsolve/index.html 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 ==
===Statistics Functions===
 
*[ 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.
 
*[http://www.statsci.org/matlab/statbox.html Statbox] has some regression functions which are not in Octave. Don't know license or Octave compatibility.
 
*[http://pub.ist.ac.at/~schloegl/matlab/NaN/ NaN-toolbox] A statistic-toolbox for Octave and Matlab®. It handles data with and without MISSING VALUES. More background information is provided in [http://pub.ist.ac.at/~schloegl/matlab/NaN/README.TXT README]
 
===Multivariate kernel density estimation===
 
*[http://www.ics.uci.edu/~ihler/code/kde.shtml Kernel Density Estimation Toolbox] LGPL
 
*[http://www.maths.lth.se/matstat/wafo/documentation/wafodoc/wafo/kdetools/index.html 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. [http://www.google.com/search?hl=en&lr=&q=Epanechnikov+site%3Ar-project.org&btnG=Search]
 
*[http://astrostatistics.psu.edu/statcodes/sc_density.html sc_density]
 
*[http://www.cs.waikato.ac.nz/~ml/weka/ Weka] is written in Java, again, don't know how difficult... look for a file called LWL.java
 
*[http://ltilib.sourceforge.net/doc/homepage/index.shtml LTI-Lib] is an object oriented library with algorithms and data structures frequently used in image processing and computer vision. LGPL
 
==Symbolic==
===Symbolic Manipulation===
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===
There are two Octave interfaces to GiNaC[1] available


===Supporting library===
*gino -- http://www.sourceforge.net/projects/mtt (download) provides an Octave interface to GiNaC via ginsh
[http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=Main_Page GCDM]. I think the libraries must be built. Getting source with subversion.


  svn co https://gdcm.svn.sourceforge.net/svnroot/gdcm/branches/gdcm-2-0
  octave:1> df = g_diff ( "sin(x)" , "x" )
df = cos(x)
octave:2> x = pi; eval ( df );
ans = -1


cmake and g++ are required. create a gdcmbin directory parallel to the gdcm-2-0 directory. Change to gdcmbin and then run cmake (Linux/cygwin).
*OctaveForge provides direct access to GiNaC in the [http://octave.sourceforge.net/index/navsymbolic.html symbolic package]. Here is a http://wiki.octave.org/wiki.pl?OctaveForgeGNCIntro short tutorial] to get you started.


> mkdir gdcmbin
===Numerical methods===
> ls
In some instances, Octave can give reasonable results using numerical methods
gdcmbin gdcm-2-0
> cd gdcmbin
> cmake -DGDCM_BUILD_SHARED_LIBS=ON ../gdcm-2-0/


This creates a Makefile in your gdcmbin directory. You can easily edit cmake options with "make edit_cache", for example to build applications like gdcmdump. "make help" is also very useful.
*Octave supports numerical derivatives:


  make install
  t = linspace(0,6,100);
y = sin(t);
dydt = diff(y) ./ diff(t)
*OctaveForge has other numerical derivative functions.


On my system, I also had to add this to my ~/.bashrc.
===Symbolic algebra systems===
Software other than Octave may be more useful for work involving symbolic manipulations


export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
Free software
*Axiom: http://www.nongnu.org/axiom/


Mingw32 is similar. Get openSSL: [http://www.slproweb.com/products/Win32OpenSSL.html Win32 Openssl v1.0.0a Light]
*GiNaC/ginsh: http://www.ginac.de


cmake -G "MinGW Makefile" -DGDCM_BUILD_SHARED_LIBS=ON ..\gdcm-2-0
*Maxima: http://maxima.sourceforge.net
mingw32-make all


===Features===
*Yacas: http://yacas.sourceforge.net
All of these still need work, but they exist, and are usable to some extent.
*dicomdict (load different dict - file follows same format as Matlab's)
*dicominfo (load metadata into octave struct. nasty bug in SQ loading)
*dicomlookup (keyword <-> tag)
*dicomread (load pixel data, 2D or 3D int types. Does not yield colormaps, yet.)
*dicomwrite (only does some 2D int types, ATM. No metadata control, yet)


===Todo===
Non-free software
*Maple: http://www.maplesoft.com


*dicomanon
*Reduce: http://www.uni-koeln.de/REDUCE
*dicomuid


===Questions===
Note that most of these systems (and Octave!) may be used from within TeXmacs http://www.texmacs.org
I don't have a Matlab license available. I would like to make this package compatible with the dicom functions in Matlab's image processing toolbox, as far as possible.


*Octave (and Matlab) stores images (y,x) and DICOM is intrinsically (x,y). Does Matlab transpose images when it loads them?
A list of some other scientific software is available at http://sal.kachinatech.com/
**matlab reads the data from the dicom file as if it's a raw block of numbers (and then converts if necessary). Therefore, current Octave/dicom behaviour is compatible with matlab.
*I would like people to try m-files that worked with Matlab to let me know of problems.
*(not necessarily) Matlab related: I need examples of odd DICOM files. I have plenty with complex metadata, but I need some with unusual images.
**More than one sample per pixel
**Colour
**Float types
*DA (date) VR: does Matlab turn them into a string?
*if the user supplies metadata (eg HighBit?, BitsStored?) that describe the type of the pixels and this is not in agreement with the type of the image matrix supplied, does Matlab
**silently convert the image pixel type to match the metadata?
**silently convert the metadata to match the pixel type?
**error and do nothing?
*What does dicominfo do when a tag is not in its dictionary: skip it or give error? I was wondering about turning the tag into a variable name, something like Tag_3243_0010. (Matlab 6.5 (2002): Private__3243_0010)
*dicominfo: Items in sequences are not necessarily the same, so cannot be stored in arrays of structs. (Matlab 6.5 (2002): makes nested structs like dcm.RTDoseROISequence?.Item_1.DoseUnits?)

Latest revision as of 21:30, 13 February 2018

Chaos and fractal contributions and toolboxes[edit]

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):
  • Dynare is a software platform for handling a wide class of economic models, in particular dynamic stochastic general equilibrium (DSGE) and overlapping generations (OLG) models. Licensed under GNU GPL (v3 or later). Consists of a pre-processor (in C++) and of a collection of Octave/Matlab routines.

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]

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.

The following used to be available:

Other Software:

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]

http://mtt.sourceforge.net

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

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

Multivariate kernel density estimation[edit]

  • A google search for epanechnikov at the r-project.org site returns several R packages on this subject. They all should be GPL compatible. [1]
  • 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

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

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

Non-free software

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/