ptolemy.actor.lib
Class IIR
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.IIR
- 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 IIR
- extends Transformer
This actor is an implementation of an infinite impulse response IIR
filter. A direct form II [1] implementation is used. This actor is type
polymorphic. Its input, output,
numerator and denominator types can be any type of Token supporting the
basic arithmetic operations (add, subtract and multiply).
This filter has a transfer function given by:
References
[1]A. V. Oppenheim, R. W. Schafer, Discrete-Time Signal Processing,
Prentice Hall, 1989.
- Since:
- Ptolemy II 1.0
- Version:
- $Id: IIR.java 58234 2010-06-17 00:26:52Z cxh $
- Author:
- Brian K. Vogel, Steve Neuendorffer, Aleksandar Necakov, Research in Motion Limited
- See Also:
- Serialized Form
- Accepted Rating:
- Proposed Rating:
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 |
IIR(CompositeEntity container,
java.lang.String name)
Construct an actor with the given container and name. |
Method Summary |
private Token |
_computeOutput(Token xCurrent)
|
private void |
_initStateVector()
|
void |
attributeChanged(Attribute attribute)
Handle parameter change events on the
numerator and denominator parameters. |
java.lang.Object |
clone(Workspace workspace)
Clone the actor into the specified workspace. |
void |
fire()
If at least one input token is available, consume a single
input token, apply the filter to that input token, and
compute a single output token. |
void |
initialize()
Initialize the filter state vector with zero state. |
boolean |
postfire()
Update the filter state. |
Methods inherited from class ptolemy.actor.AtomicActor |
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, prefire, 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.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 |
numerator
public Parameter numerator
- This parameter represents the numerator coefficients as an array
of tokens. The format is
{b0, b1, ..., bM}. The default
value of this parameter is {1.0}.
denominator
public Parameter denominator
- This parameter represents the denominator coefficients as an
array of a tokens. The format is
{a0, a1, ..., aN}. Note that
the value of a0 is constrained to be 1.0. This
implementation will issue a warning if it is not.
The default value of this parameter is {1.0}.
_numerator
private Token[] _numerator
_denominator
private Token[] _denominator
_stateVector
private Token[] _stateVector
_currentTap
private int _currentTap
_latestWindow
private Token _latestWindow
IIR
public IIR(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.
attributeChanged
public void attributeChanged(Attribute attribute)
throws IllegalActionException
- Handle parameter change events on the
numerator and denominator parameters. The
filter state vector is reinitialized to zero state.
- Overrides:
attributeChanged
in class NamedObj
- Parameters:
attribute
- The attribute that changed.
- Throws:
IllegalActionException
- If this method is invoked
with an unrecognized parameter.
clone
public java.lang.Object clone(Workspace workspace)
throws java.lang.CloneNotSupportedException
- Clone the actor into the specified workspace. This calls the
base class and then sets the type constraints.
- Overrides:
clone
in class AtomicActor
- Parameters:
workspace
- The workspace for the new object.
- Returns:
- A new actor.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class has
an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,
NamedObj.setDeferringChangeRequests(boolean)
fire
public void fire()
throws IllegalActionException
- If at least one input token is available, consume a single
input token, apply the filter to that input token, and
compute a single output token. If this method is invoked
multiple times in one iteration, then only the input read
on the last invocation in the iteration will affect the
filter state.
- Specified by:
fire
in interface Executable
- Overrides:
fire
in class AtomicActor
- Throws:
IllegalActionException
- Not thrown in this base class.
initialize
public void initialize()
throws IllegalActionException
- Initialize the filter state vector with zero state.
- Specified by:
initialize
in interface Initializable
- Overrides:
initialize
in class AtomicActor
- Throws:
IllegalActionException
- If the base class throws
it.
postfire
public boolean postfire()
throws IllegalActionException
- Update the filter state.
- Specified by:
postfire
in interface Executable
- Overrides:
postfire
in class AtomicActor
- Returns:
- True if execution can continue into the next iteration.
- Throws:
IllegalActionException
- If the base class throws it.
_computeOutput
private Token _computeOutput(Token xCurrent)
throws IllegalActionException
- Throws:
IllegalActionException
_initStateVector
private void _initStateVector()
throws IllegalActionException
- Throws:
IllegalActionException