ptolemy.actor.lib.comm
Class HuffmanBasic
java.lang.Object
ptolemy.kernel.util.NamedObj
ptolemy.kernel.InstantiableNamedObj
ptolemy.kernel.Entity
ptolemy.kernel.ComponentEntity
ptolemy.actor.AtomicActor
ptolemy.actor.TypedAtomicActor
ptolemy.actor.lib.Transformer
ptolemy.actor.lib.comm.HuffmanBasic
- All Implemented Interfaces:
- Actor, Changeable, java.lang.Cloneable, Debuggable, DebugListener, Derivable, Executable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable, java.io.Serializable, TypedActor
- Direct Known Subclasses:
- HuffmanCoder, HuffmanDecoder
- public class HuffmanBasic
- extends Transformer
Given a probability distribution, generate the Huffman code book.
The probability distribution is given by the pmf parameter.
The corresponding alphabet is given by the alphabet parameter.
The code book is in a format of an array of strings, each string
consists of '0' and '1's. The code book is sent to the
huffmanCodeBook output port.
- Since:
- Ptolemy II 4.1
- Version:
- $Id: HuffmanBasic.java,v 1.16 2005/04/29 20:04:34 cxh Exp $
- Author:
- Ye Zhou
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
Nested Class Summary |
class |
HuffmanBasic.Node
A class that defines the node in binary tree that is used
to construct the codebook of Huffman code. |
Field Summary |
protected java.lang.String[] |
_codeBook
The huffman code book. |
protected boolean |
_parametersInvalid
Flag that indicates if the parameters are invalid. |
protected double[] |
_pmf
The probability mass function. |
Parameter |
alphabet
The alphabet of the input. |
TypedIOPort |
huffmanCodeBook
A port that produces the Huffman code book generated
based on the probability mass function. |
Parameter |
pmf
The probability mass function. |
Fields inherited from class ptolemy.kernel.util.NamedObj |
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS |
Constructor Summary |
HuffmanBasic(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name.
|
Method Summary |
void |
attributeChanged(Attribute attribute)
If the attribute being changed is pmf, then verify
all the elements are positive and their sum is 1.0. |
void |
fire()
Generate the Huffman codebook for the given pmf, and
encode the input into booleans and send them to the output port. |
java.lang.String[] |
generateCodeBook(double[] pmf)
Generate the Huffman code book given the probability
mass function. |
void |
initialize()
Initialize the actor by resetting the _parametersInvalid to true.
|
Methods inherited from class ptolemy.actor.AtomicActor |
_createReceivers, clone, connectionsChanged, getDirector, getExecutiveDirector, getFunctionDependency, getManager, inputPortList, iterate, newReceiver, outputPortList, postfire, prefire, preinitialize, pruneDependencies, removeDependency, setContainer, stop, stopFire, terminate, wrapup |
Methods inherited from class ptolemy.kernel.ComponentEntity |
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName |
Methods inherited from class ptolemy.kernel.Entity |
_description, _exportMoMLContents, _removePort, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName, validateSettables |
Methods inherited from class ptolemy.kernel.util.NamedObj |
_addAttribute, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, getAttribute, getAttributes, getChangeListeners, getClassName, getDerivedLevel, getDerivedList, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setModelErrorHandler, setNormalDebugging, setPersistent, setSource, setVerboseDebugging, sortContainedObjects, toplevel, toString, workspace |
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
pmf
public Parameter pmf
- The probability mass function. This parameter is an array
of doubles. Each element should be positive and the sum of
all elements should be 1.0. The default value is {0.5, 0.5}.
alphabet
public Parameter alphabet
- The alphabet of the input. This parameter is an ArrayToken.
Its default value is {0, 1}.
huffmanCodeBook
public TypedIOPort huffmanCodeBook
- A port that produces the Huffman code book generated
based on the probability mass function. It is an array
of strings.
_codeBook
protected java.lang.String[] _codeBook
- The huffman code book.
_parametersInvalid
protected boolean _parametersInvalid
- Flag that indicates if the parameters are invalid. If it is
true, then a new code book needs to be generated.
_pmf
protected double[] _pmf
- The probability mass function.
HuffmanBasic
public HuffmanBasic(CompositeEntity container,
java.lang.String name)
throws NameDuplicationException,
IllegalActionException
- Construct an actor with the given container and name.
The output and trigger ports are also constructed.
- Parameters:
container
- The container.name
- The name of this actor.
- Throws:
IllegalActionException
- If the entity cannot be contained
by the proposed container.
NameDuplicationException
- If the container already has an
actor with this name.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- If the attribute being changed is pmf, then verify
all the elements are positive and their sum is 1.0.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If any element in pmf
is non-positive or the sum is not 1.0.
fire
public void fire()
throws IllegalActionException
- Generate the Huffman codebook for the given pmf, and
encode the input into booleans and send them to the output port.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- Not thrown in this base class.
generateCodeBook
public java.lang.String[] generateCodeBook(double[] pmf)
- Generate the Huffman code book given the probability
mass function.
- Parameters:
pmf
- The probability mass function.
- Returns:
- The code book, where each codeword is a string
of '0' and '1'.
initialize
public void initialize()
throws IllegalActionException
- Initialize the actor by resetting the _parametersInvalid to true.
Creat a linked list to store the nodes for the binary tree.
- Specified by:
initialize
in interface Executable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the parent class throws it.