Editing Code

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
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


==Econometrics==
==Ecnometrics==
*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 25: Line 24:
*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]
*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]].
*Wavelets: try 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/
* Peter Kovesi's functions for computer vision and image processing: http://www.csse.uwa.edu.au/~pk/Research/MatlabFns/


Line 59: Line 58:


==Digital communications in medicine (DICOM)==
==Digital communications in medicine (DICOM)==
There is a DICOM package hosted on sourceforge: [[dicom | more information]].
At an early development stage. [http://octave.svn.sourceforge.net/viewvc/octave/trunk/octave-forge/extra/dicom/ octave-forge svn]
*Maintainer: Andy Buckle [http://sourceforge.net/sendmessage.php?touser=1760416contact]  
*Currently worked on by: Kris Thielemans


==Adding a quadl like integrator to octave==
===Supporting library===
[http://sourceforge.net/apps/mediawiki/gdcm/index.php?title=Main_Page GCDM]. I think the libraries must be built. Getting source with subversion.


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.
svn co https://gdcm.svn.sourceforge.net/svnroot/gdcm/branches/gdcm-2-0


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


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.
> mkdir gdcmbin
> ls
gdcmbin gdcm-2-0
> cd gdcmbin
> cmake -DGDCM_BUILD_SHARED_LIBS=ON ../gdcm-2-0/


I have contacted Prof. Gander to allow for distribution of his m-files in octave-forge.
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.


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


==Model transformation tools==
On my system, I also had to add this to my ~/.bashrc.
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.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib


==Optimization==
Mingw32 is similar. Get openSSL: [http://www.slproweb.com/products/Win32OpenSSL.html Win32 Openssl v1.0.0a Light]
There is a variety of code in the octave-forge optimization package http://octave.sourceforge.net/optim/index.html


==Parallelism ==
cmake -G "MinGW Makefile" -DGDCM_BUILD_SHARED_LIBS=ON ..\gdcm-2-0
Operating Octave remotely and in parallel
mingw32-make all
*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 ==
===Features===
===Statistics Functions===
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)


*[ 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.
===Todo===


*[http://www.statsci.org/matlab/statbox.html Statbox] has some regression functions which are not in Octave. Don't know license or Octave compatibility.
*dicomanon
*dicomuid


*[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]
===Questions===
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.


===Multivariate kernel density estimation===
*Octave (and Matlab) stores images (y,x) and DICOM is intrinsically (x,y). Does Matlab transpose images when it loads them?
**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?)


*[http://www.ics.uci.edu/~ihler/code/kde.shtml Kernel Density Estimation Toolbox] LGPL
== Fixed point toolbox ==
(initial announcement can be found [http://www.octave.org/octave-lists/archive/help-octave.2004/msg01274.html here], with the corresponding thread)


*[http://www.maths.lth.se/matstat/wafo/documentation/wafodoc/wafo/kdetools/index.html wafo/kdetools] GPL
When implementing algorithms in hardware, it is common to reduce the accuracy of the representation of numbers to a smaller number of bits. This allows much lower complexity in the hardware, at the cost of accuracy and potential overflow problems. Such representations are known as fixed point.


*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]
OctaveForge now contains [http://octave.sourceforge.net/Fixedpoint/index.html a toolbox] to perform such fixed point calculations. This toolbox supplies a fixed point type that allows Octave to model the effects of such a reduction in accuracy of the representation of numbers. The major advantage of this toolbox is that with correctly written Octave scripts, the same code can be used to test both fixed and floating point representations of numbers.


*[http://astrostatistics.psu.edu/statcodes/sc_density.html sc_density]
What it does is create several new user types for fixed point scalar, complex scalars, matrices and complex matrices, and the corresponding operators on these types. As this code was first written against 2.1.50 there is no capabilities at this time for NDArray operations with this code, however I'm not sure this is a problem.


*[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
A typical use of the toolbox might be something like


*[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
n = 2;
a = rand (n, n);
b = rand (n, n);
## Create fixed-point version with 1 bit before decimal and 5 after.
af = fixed (1, 5, a);
bf = fixed (1, 5, b);
c = myfunc (a, b);
cf = myfunc (af, bf);
function y = myfunc (a, b)
    y = a * b;
endfunction


==Symbolic==
where as you can see the underlying function myfunc is unchanged, while it is called with either floating or fixed point types. The case above is for fixed-point values with 1-bit before the decimal point and 5 after, and for me gave a result of
===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
  octave:8> c
c =
  0.98105  0.94436
  0.82622  0.30831
octave:9> cf
cf =
  0.93750  0.90625
  0.78125  0.25000


The below mentioned GiNaC will add symbolic functionality to octave.
which clearly shows the loss of precision of a fixed-point algorithm with only 6-bits of precision in a matrix multiply. One gotcha in this toolbox is the use of the concatenation operator "[ ]" which will implicitly reconvert fixed-point values back to floating-point, with Octave 2.1.57 or earlier. This is due to an internal limitation of octave that was removed in Octave 2.1.58. So for the best experience it is suggested you use this toolbox with octave 2.1.58 or later.


===Octave interfaces to GiNaC===
This package is only available with recent versions of OctaveForge (20040707 or later). With the package installed online help is available with the command
There are two Octave interfaces to GiNaC[1] available
octave:1> fixedpoint info


*gino -- http://www.sourceforge.net/projects/mtt (download) provides an Octave interface to GiNaC via ginsh
As this package is relatively new, all feedback on its use would be most welcome.


octave:1> df = g_diff ( "sin(x)" , "x" )
Matlab also recently introduced a [http://www.mathworks.com/products/fixed Fixed Point Toolbox]. The Octave toolbox has been written independently of the Matlab toolbox and doesn't follow the same syntax. This might change in the future, if the author (DavidBateman) can be bothered to put the effort into making the required changes. Mathworks [http://www.mathworks.com/access/helpdesk/help/pdf_doc/fixedpoint/FPTUG.pdf documentation] for their fixed point toolbox also includes a generic discussion of fixed point numbers that might be a useful addition to the documentation supplied with Octave itself. Another short introduction to fixed point arithmetics is [http://home.earthlink.net/~yatescr/fp.pdf this].
df = cos(x)
octave:2> x = pi; eval ( df );
ans = -1


*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.
==Adding a quadl like integrator to octave==


===Numerical methods===
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.
In some instances, Octave can give reasonable results using numerical methods


*Octave supports numerical derivatives:  
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.


t = linspace(0,6,100);
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.
y = sin(t);
dydt = diff(y) ./ diff(t)
*OctaveForge has other numerical derivative functions.


===Symbolic algebra systems===
I have contacted Prof. Gander to allow for distribution of his m-files in octave-forge.
Software other than Octave may be more useful for work involving symbolic manipulations


Free software
quadl, from the above source is now incorporated into octave-forge-2004-02-12.  
*Axiom: http://www.nongnu.org/axiom/


*GiNaC/ginsh: http://www.ginac.de
==Model transformation tools==
http://mtt.sourceforge.net


*Maxima: http://maxima.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.


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


Non-free software
==Parallelism ==
*Maple: http://www.maplesoft.com
Operating Octave remotely and in parallel
 
*distributed linear algebra from octave command line via [http://icl.cs.utk.edu/netsolve/index.html GridSolve]
*Reduce: http://www.uni-koeln.de/REDUCE
*OctaveForge has a parallel octave, allowing remote commands and data transfer
 
*OctaveServer allows net connections to Octave
Note that most of these systems (and Octave!) may be used from within TeXmacs http://www.texmacs.org
*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)
 
A list of some other scientific software is available at http://sal.kachinatech.com/
Please note that all contributions to Octave may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Octave:Copyrights for details). Do not submit copyrighted work without permission!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)