Class VectorDisassembler

  • All Implemented Interfaces:
    java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

    public class VectorDisassembler
    extends Transformer

    An actor that disassembles a DoubleMatrixToken to a multiport output.

    On each firing, read one column or row vector (i.e. a DoubleMatrixToken with one column or row) from the input port and send out individual DoubleTokens to each channel of the output port. If the width of the output port (say, n) is less than the number of rows (say, m) in the input token, then the first n elements in the vector will be sent, and the remaining tokens are discarded. If n is greater than m, then the last n-m channels of the output port will never send tokens out. This class throws an exception if the input is not a column vector.

    For sequential domains like SDF, the combination of domains.sdf.lib.MatrixToDouble and a Distributor is equivalent to this actor. However, that combination will not work in CT, so we need this actor.

    Since:
    Ptolemy II 2.0
    Version:
    $Id$
    Author:
    Jie Liu, Elaine Cheong
    See Also:
    VectorAssembler
    Pt.AcceptedRating:
    Yellow (celaine)
    Pt.ProposedRating:
    Yellow (celaine)
    • Method Detail

      • fire

        public void fire()
                  throws IllegalActionException
        If there is a token at the input, read one column or row vector (i.e. a DoubleMatrixToken with one column or row) from the input port, and for each channel i of the output port, send send the ith element of this column or row vector to this channel. Otherwise, do nothing. Note: The output tokens are copies of the corresponding elements in the input token.
        Specified by:
        fire in interface Executable
        Overrides:
        fire in class AtomicActor<TypedIOPort>
        Throws:
        IllegalActionException - If there is no director, or the input token has more than one columns and rows.