Modifying the MATLAB » History » Version 4

Chris Cannam, 2014-03-12 02:10 PM

1 1 Chris Cannam
h1. Modifying the MATLAB
2 1 Chris Cannam
3 2 Chris Cannam
h2. Context
4 2 Chris Cannam
5 2 Chris Cannam
You want to change something in the MATLAB code and deploy the changed version.
6 2 Chris Cannam
7 2 Chris Cannam
h2. You will need
8 2 Chris Cannam
9 2 Chris Cannam
 * A computer with a licensed copy of MATLAB. This step uses the "mcc" compiler included in the MATLAB distribution.
10 2 Chris Cannam
 * The Java development kit (JDK) of whichever version your MATLAB installation expects. Current MATLAB seems to call for Java 7.
11 2 Chris Cannam
12 2 Chris Cannam
You do _not_ need the separate MATLAB compiler runtime package at this stage.
13 3 Chris Cannam
14 3 Chris Cannam
h2. What to change; limitations
15 3 Chris Cannam
16 3 Chris Cannam
The webapp repository includes the MATLAB code as a sub-repository, in a directory called @mcode@. Any MATLAB code in this directory can be called from the web app. The calling convention uses a MATLAB struct to pass the arguments, as you can see in the existing examples.
17 3 Chris Cannam
18 3 Chris Cannam
File access is a thorny subject; compiled MATLAB is usually run in its own environment in which the current working directory is unpredictable. It's safest to assume that the current working directory is unavailable or unknown, and to pass in a working or scratch directory as one of the MATLAB function arguments and then use paths relative to that.
19 3 Chris Cannam
20 3 Chris Cannam
h2. How to rebuild
21 4 Chris Cannam
22 4 Chris Cannam
In the main directory of the web app project (i.e. above the @mcode@ directory), either run the @mcc@ compiler directly or use the @build-isvr@ Ant task.
23 4 Chris Cannam
24 4 Chris Cannam
To run @mcc@ directly, you need a command like this (which is also documented in the INSTALL file)
25 4 Chris Cannam
26 4 Chris Cannam
<pre>
27 4 Chris Cannam
$ /Applications/MATLAB_R2013b.app/bin/mcc -W "java:uk.ac.soton.isvr,HumanEcho" -d ./scratch -T "link:lib" -v "class{HumanEcho:./mcode/simulateBinauralSignals.m}"
28 4 Chris Cannam
</pre>
29 4 Chris Cannam
30 4 Chris Cannam
The paths will depend on your operating system and MATLAB version.
31 4 Chris Cannam
32 4 Chris Cannam
To use Ant, you just need to run
33 4 Chris Cannam
34 4 Chris Cannam
<pre>
35 4 Chris Cannam
$ ant -f build-isvr.xml
36 4 Chris Cannam
</pre>
37 4 Chris Cannam
38 4 Chris Cannam
However, the paths and suchlike are still system-dependent, so the Ant build file may have the wrong paths in it and may need fixing itself!