Differences between revisions 1 and 10 (spanning 9 versions)
Revision 1 as of 2008-05-23 16:39:00
Size: 1667
Comment:
Revision 10 as of 2008-06-09 09:49:04
Size: 5408
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
#language en
Line 3: Line 5:
Porting of Dynare to [http://www.octave.org Octave] is under progress. Development is done using Octave version 3.0 (now available in Debian Testing aka "Lenny"). Porting of Dynare to Octave is under progress. Development is done using Octave version 3.0.

== About Octave ==

Octave is a free clone of Matlab, running under Linux, Windows and MacOS.

It normally runs in a command window, and displays graphics in separate windows (using Gnuplot).

Some ressources:

 * [http://www.octave.org Octave official site]
 * [http://octave.sourceforge.net Octave Forge]: a set of extensions for Octave
 * Official [http://www.gnu.org/software/octave/doc/interpreter/ Octave manual] online
 * On the compatibility between Octave and Matlab:
   * List of [http://www.gnu.org/software/octave/FAQ.html#MATLAB-compatibility differences between Octave and Matlab]
   * List of [http://wiki.octave.org/wiki.pl?MissingMatlabFunctions missing Matlab functions] in Octave
   * More on [http://wiki.octave.org/wiki.pl?MatlabOctaveCompatibility Matlab/Octave compatibility]

Note that a graphical frontend for Octave is available (see [http://www.unige.ch/math/folks/loisel/www.math.mcgill.ca/loisel/octave-workshop/ Octave workshop]), but it is not at all necessary for running Dynare.

== Development of Dynare for Octave ==
Line 13: Line 35:
== Installing and running Dynare for Octave == == Installing Dynare for Octave ==
Line 15: Line 37:
Under Debian "Lenny", install package {{{octave3.0}}}. === Octave ===
Line 17: Line 39:
At the prompt, type: Under Debian "Lenny", install package {{{octave3.0}}}

For Windows, the Cygwin package is quite outdated. You should rather download [http://sourceforge.net/project/showfiles.php?group_id=2888&package_id=40078 precompiled binaries from Octave Forge].

[http://wiki.octave.org/wiki.pl?CategoryInstall More installation instructions] can be found on Octave Wiki.

=== Dynare for Octave ===

If you don't already have a subversion copy of the whole Dynare tree, you should type (under Linux or Cygwin prompt, assuming you have installed the {{{subversion}}} package):
{{{
svn checkout http://www.cepremap.cnrs.fr/svn/branches/dynare_v4_octave
}}}

Don't forget to update regularly your working copy, using {{{svn update}}}.

== Running Dynare for Octave ==

First, you should run Octave.

Under Linux, at the prompt, just type:
Line 21: Line 62:
Under Windows, you should have a shortcut already installed in your Start menu.
Line 22: Line 64:
Then add path to {{{dynare_v4_octave}}} using the {{{addpath}}} command, as you would under Matlab. It is possible to autoexecute this command at each Octave start by adding it to the {{{~/.octaverc}}} init file. Then, from Octave, add the path to {{{dynare_v4_octave}}} using the {{{addpath}}} command, as you would under Matlab:
{{{
addpath REPLACE_WITH_RIGHT_PATH/dynare_v4_octave/matlab
}}}
It is possible to autoexecute this command at each Octave start by adding it to the {{{.octaverc}}} startup file (under Linux, this file should be put in the home directory; under Windows, it should be put at the root of the user home under {{{Documents and Settings}}}).
Line 24: Line 70:
== List of issues between Matlab and Octave == Unless you tell it to do otherwise, Octave won't accept the short syntax when typing {{{dynare}}} command. In other words, to run Dynare on {{{ramst.mod}}}, you need to type:
{{{
dynare('ramst')
}}}
rather than:
{{{
dynare ramst
}}}

However, you can force Octave to accept the short syntax by typing the following (or by adding it to your {{{.octaverc}}}):
{{{
mark_as_command dynare
}}}


== Main changes between Matlab and Octave versions of Dynare ==
Line 27: Line 88:
 * Ajustments were obviously necessary where {{{version()}}} function is called
 * Generalized eigenvalues are not implemented as a primitive (i.e. {{{eig(A,B)}}} doesn't exist in Octave). This implied a change in {{{dr1.m}}}
 * Adjustments were obviously necessary where {{{version()}}} function is called
 * '''Generalized eigenvalues:''' {{{eig(A,B)}}} doesn't exist in Octave. But a call to {{{lambda = qz(A,B)}}} does the same job. Implied a change in {{{dr1.m}}}
 * '''QZ decomposition''': {{{[AA,BB,Q,Z] = qz(A,B)}}} works under Octave, but the convention for {{{Q}}} is different. We have {{{AA = Q*A*Z}}} under Matlab and {{{AA = Q'*A*Z}}} under Octave. Implied changes in {{{gensylv/sylvester3.m}}} and {{{qz/mjdgges.m}}}
 * '''Reciprocal condition number''': {{{rcond(A)}}} doesn't exist under Octave. For the moment, the workaround is to create a {{{rcond.m}}} M-file which does {{{1/cond(A,1)}}}. The {{{rcond()}}} function should be available in the next major release of Octave, see [http://www.cae.wisc.edu/pipermail/octave-maintainers/2008-May/007332.html this post] and its reply.
 * Saving graphics under Octave works differently ({{{saveas()}}} doesn't exist)
 * Creation of PDF files is not supported (through {{{print -dpdf}}}). This comes from the fact that PDF support in GNUPlot is non-free, and therefore not available under Debian or Windows package. See [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=248426 Debian bug #248426]
Line 33: Line 98:
 * Simple stochastic simulation should work
 * Graphics display is correct but not very nice when many plots on the same figure
 * Graphics saving on filesystem is disabled for the moment

Dynare for Octave

Porting of Dynare to Octave is under progress. Development is done using Octave version 3.0.

About Octave

Octave is a free clone of Matlab, running under Linux, Windows and MacOS.

It normally runs in a command window, and displays graphics in separate windows (using Gnuplot).

Some ressources:

Note that a graphical frontend for Octave is available (see [http://www.unige.ch/math/folks/loisel/www.math.mcgill.ca/loisel/octave-workshop/ Octave workshop]), but it is not at all necessary for running Dynare.

Development of Dynare for Octave

A specific subversion branch has been created under branches/dynare_v4_octave. Note that this branch is supposed to work on both Matlab and Octave (using tests to differentiate between the two when necessary). Please report any failure to run under Matlab.

It is possible to view the differences between Matlab and Octave versions of Dynare by issuing:

svn diff http://www.cepremap.cnrs.fr/svn/dynare_v4 http://www.cepremap.cnrs.fr/svn/branches/dynare_v4_octave

Note: be aware that recent changes to Matlab version of Dynare may not have been yet merged into the Octave branch, and may thus appear as spurious differences.

Installing Dynare for Octave

Octave

Under Debian "Lenny", install package octave3.0

For Windows, the Cygwin package is quite outdated. You should rather download [http://sourceforge.net/project/showfiles.php?group_id=2888&package_id=40078 precompiled binaries from Octave Forge].

[http://wiki.octave.org/wiki.pl?CategoryInstall More installation instructions] can be found on Octave Wiki.

Dynare for Octave

If you don't already have a subversion copy of the whole Dynare tree, you should type (under Linux or Cygwin prompt, assuming you have installed the subversion package):

svn checkout http://www.cepremap.cnrs.fr/svn/branches/dynare_v4_octave

Don't forget to update regularly your working copy, using svn update.

Running Dynare for Octave

First, you should run Octave.

Under Linux, at the prompt, just type:

octave

Under Windows, you should have a shortcut already installed in your Start menu.

Then, from Octave, add the path to dynare_v4_octave using the addpath command, as you would under Matlab:

addpath REPLACE_WITH_RIGHT_PATH/dynare_v4_octave/matlab

It is possible to autoexecute this command at each Octave start by adding it to the .octaverc startup file (under Linux, this file should be put in the home directory; under Windows, it should be put at the root of the user home under Documents and Settings).

Unless you tell it to do otherwise, Octave won't accept the short syntax when typing dynare command. In other words, to run Dynare on ramst.mod, you need to type:

dynare('ramst')

rather than:

dynare ramst

However, you can force Octave to accept the short syntax by typing the following (or by adding it to your .octaverc):

mark_as_command dynare

Main changes between Matlab and Octave versions of Dynare

  • Warning handling is different between Matlab and Octave, and necessitated some adjustments.
  • Adjustments were obviously necessary where version() function is called

  • Generalized eigenvalues: eig(A,B) doesn't exist in Octave. But a call to lambda = qz(A,B) does the same job. Implied a change in dr1.m

  • QZ decomposition: [AA,BB,Q,Z] = qz(A,B) works under Octave, but the convention for Q is different. We have AA = Q*A*Z under Matlab and AA = Q'*A*Z under Octave. Implied changes in gensylv/sylvester3.m and qz/mjdgges.m

  • Reciprocal condition number: rcond(A) doesn't exist under Octave. For the moment, the workaround is to create a rcond.m M-file which does 1/cond(A,1). The rcond() function should be available in the next major release of Octave, see [http://www.cae.wisc.edu/pipermail/octave-maintainers/2008-May/007332.html this post] and its reply.

  • Saving graphics under Octave works differently (saveas() doesn't exist)

  • Creation of PDF files is not supported (through print -dpdf). This comes from the fact that PDF support in GNUPlot is non-free, and therefore not available under Debian or Windows package. See [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=248426 Debian bug #248426]

Current status of development

  • Simple deterministic models should work
  • Simple stochastic simulation should work
  • Graphics display is correct but not very nice when many plots on the same figure
  • Graphics saving on filesystem is disabled for the moment

DynareWiki: OctaveCompatibility (last edited 2012-10-08 11:47:00 by SébastienVillemot)