The module function

The module function, which does feature extraction and J-function calculation, has the syntax:
  [z,jout]=module_zzz(x,jout,[param1],[param2] ... );
The variables x, and z represent ${\bf x}$ and ${\bf z}$ (input and output of the feature transformation). The optional param variables specify parameters for the module, such as model order, etc, and is always in the third and higher arguments. Any number of parameters may be specified in the arguments. The input/output variable jout is the accumulator for the log J-function, so we set jout to zero before calling the first module. To re-synthesize x from z, we use the synth module function:
    x=module_zzz_synth(z,[param1],[param1] ...);
in which the variables x, z, and param have the same interpretation as for the module function described above. In most cases, there also exists a test function
    module_zzz_test(task,[param],[param] ...);
which runs various tests. Typically, these include acid test (task='acid') and re-synthesis test (task='resynth').

We can chain together modules:

     jout=0;
     [y,jout]=module_xxx(x,jout,[param1]);
     [w,jout]=module_yyy(y,jout,[param2]);
     [z,jout]=module_zzz(w,jout,[param3]);
To invert the above chain, we use:
     w=module_zzz_synth(z,[param3]);
     y=module_yyy_synth(w,[param2]);
     x=module_xxx_synth(y,[param1]);