ptolemy.actor.lib
Class MovingAverage

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.Transformer
                              extended by ptolemy.actor.lib.MovingAverage
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class MovingAverage
extends Transformer

This actor outputs the moving average of the input sequence. The maximum number of prior inputs to be averaged is given by the maxPastInputsToAverage parameter. The output is the average of the all the previous inputs that have been received if fewer than maxPastInputsToAverage have been received, and the average of the previous maxPastInputsToAverage inputs otherwise. The input can be any data type that supports division by a double.

Since:
Ptolemy II 6.1
Version:
$Id: MovingAverage.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Edward A. Lee
See Also:
Token, Serialized Form
Accepted Rating:
Red (eal)
Proposed Rating:
Yellow (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
protected  int _count
          Count of the number of inputs received, bounded by the size of the _data array.
protected  Token[] _data
          The delay line.
private  DoubleToken _factor
          The factor by which to multiply the sum of the past inputs.
protected  int _maxPastInputsToAverage
          Maximum number of past inputs to average.
protected  int _mostRecent
          The index into the delay line of the most recent input.
protected  boolean _reinitializeNeeded
          Indicator that at least an attribute has been changed since the last initialization.
 Parameter maxPastInputsToAverage
          The maximum number of past inputs to average.
 
Fields inherited from class ptolemy.actor.lib.Transformer
input, output
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
MovingAverage(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
protected  void _reinitialize()
          Reinitialize local variables in response to changes in attributes.
 void attributeChanged(Attribute attribute)
          Set a flag that causes recalculation of various local variables that are used in execution on the next invocation of fire().
 void fire()
          Consume the inputs and produce the output.
 void initialize()
          Perform domain-specific initialization by calling the initialize(Actor) method of the director.
 boolean prefire()
          Return false if the input does not have a token.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, 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, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

maxPastInputsToAverage

public Parameter maxPastInputsToAverage
The maximum number of past inputs to average. This is an integer that defaults to 10.


_data

protected Token[] _data
The delay line.


_mostRecent

protected int _mostRecent
The index into the delay line of the most recent input.


_count

protected int _count
Count of the number of inputs received, bounded by the size of the _data array.


_maxPastInputsToAverage

protected int _maxPastInputsToAverage
Maximum number of past inputs to average.


_reinitializeNeeded

protected boolean _reinitializeNeeded
Indicator that at least an attribute has been changed since the last initialization.


_factor

private DoubleToken _factor
The factor by which to multiply the sum of the past inputs.

Constructor Detail

MovingAverage

public MovingAverage(CompositeEntity container,
                     java.lang.String name)
              throws NameDuplicationException,
                     IllegalActionException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
Set a flag that causes recalculation of various local variables that are used in execution on the next invocation of fire().

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the attribute contains an invalid value or if the super method throws it.

fire

public void fire()
          throws IllegalActionException
Consume the inputs and produce the output.

Specified by:
fire in interface Executable
Overrides:
fire in class AtomicActor
Throws:
IllegalActionException - If parameter values are invalid, or if there is no director, or if runtime type conflicts occur.

prefire

public boolean prefire()
                throws IllegalActionException
Return false if the input does not have a token. Otherwise, return what the superclass returns.

Specified by:
prefire in interface Executable
Overrides:
prefire in class AtomicActor
Returns:
False if the number of input tokens available is not at least equal to the decimation parameter.
Throws:
IllegalActionException - If the superclass throws it.

initialize

public void initialize()
                throws IllegalActionException
Perform domain-specific initialization by calling the initialize(Actor) method of the director. The director may reject the actor by throwing an exception if the actor is incompatible with the domain. Set a flag that reinitializes the data buffer at the first firing.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class AtomicActor
Throws:
IllegalActionException - If the superclass throws it.

_reinitialize

protected void _reinitialize()
                      throws IllegalActionException
Reinitialize local variables in response to changes in attributes.

Throws:
IllegalActionException - If there is a problem reinitializing.