Class ArrayPeakSearch
- java.lang.Object
-
- ptolemy.kernel.util.NamedObj
-
- ptolemy.kernel.InstantiableNamedObj
-
- ptolemy.kernel.Entity<T>
-
- ptolemy.kernel.ComponentEntity<T>
-
- ptolemy.actor.AtomicActor<TypedIOPort>
-
- ptolemy.actor.TypedAtomicActor
-
- ptolemy.actor.lib.ArrayPeakSearch
-
- All Implemented Interfaces:
java.lang.Cloneable
,Actor
,Executable
,FiringsRecordable
,Initializable
,TypedActor
,Changeable
,Debuggable
,DebugListener
,Derivable
,Instantiable
,ModelErrorHandler
,MoMLExportable
,Moveable
,Nameable
public class ArrayPeakSearch extends TypedAtomicActor
This actor outputs the indices and values of peaks in an input array.
The dip and squelch parameters control the sensitivity to noise. These are given either as absolute numbers or as relative numbers. If they are absolute numbers, then a peak is detected if a rise above dip is detected before the peak and a dip below dip is detected after the peak. If they are given as relative numbers, then a peak is detected when a rise by a factor dip above the most recently seen minimum (if there has been one) is seen before the peak, and if a dip by a factor dip relative to the peak is seen after the peak. Relative numbers can be either linear (a fraction) or in decibels. This is determined by the value of the scale parameter. For example, if dip is given as 2.0 and scale has value "relative linear", then a dip must drop to half of a local peak value to be considered a dip.
If squelch is given as 10.0 and scale has value "relative linear", then any peaks that lie below 1/10 of the global peak are ignored. Note that dip is relative to the most recently seen peak or valley, and squelch is relative to the global peak in the array, when relative values are used. If scale has value "relative amplitude decibels", then a value of 6.0 is equivalent to the linear value 2.0. If scale has value "relative power decibels", then a value of 3.0 is equivalent to the linear value 2.0. In either decibel scale, 0.0 is equivalent to 0.0 linear. Other parameters control how the search is conducted.
This actor is based on Matlab code developed by John Signorotti of Southwest Research Institute.
- Since:
- Ptolemy II 4.0
- Version:
- $Id$
- Author:
- Edward A. Lee
- Pt.AcceptedRating:
- Red (cxh)
- Pt.ProposedRating:
- Yellow (eal)
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
-
-
Field Summary
Fields Modifier and Type Field Description Parameter
dip
The amount that the signal must drop below a local maximum before a peak is detected.PortParameter
endIndex
The end point of the search.TypedIOPort
input
The input port.Parameter
maximumNumberOfPeaks
The maximum number of peaks to report.TypedIOPort
peakIndices
The output port for the indices of the peaks.TypedIOPort
peakValues
The output port for the values of the peaks.StringParameter
scale
An indicator of whether dip and squelch should be interpreted as absolute or relative, and if relative, then on a linear scale, in amplitude decibels, or power decibels.Parameter
squelch
The value below which the input is ignored by the algorithm.PortParameter
startIndex
The starting point of the search.-
Fields inherited from class ptolemy.actor.TypedAtomicActor
_typesValid
-
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
-
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _deferChangeRequests, _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
Constructors Constructor Description ArrayPeakSearch(CompositeEntity container, java.lang.String name)
Construct an actor with the given container and name.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Object
clone(Workspace workspace)
Override the base class to set type constraints.void
fire()
Consume at most one array from the input port and produce two arrays containing the indices and values of the identified peaks.-
Methods inherited from class ptolemy.actor.TypedAtomicActor
_containedTypeConstraints, _customTypeConstraints, _defaultTypeConstraints, _fireAt, _fireAt, attributeTypeChanged, clone, isBackwardTypeInferenceEnabled, newPort, typeConstraintList, typeConstraints
-
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, _declareDelayDependency, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, 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
_addPort, _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, _containedDecorators, _copyChangeRequestList, _debug, _debug, _debug, _debug, _debug, _executeChangeRequests, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _notifyHierarchyListenersAfterChange, _notifyHierarchyListenersBeforeChange, _propagateValue, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, addHierarchyListener, attributeChanged, attributeDeleted, attributeList, attributeList, decorators, 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, notifyOfNameChange, propagateValue, propagateValues, removeAttribute, removeChangeListener, removeDebugListener, removeHierarchyListener, 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.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
-
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, prefire, stop, stopFire, terminate
-
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
-
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
-
-
-
-
Field Detail
-
dip
public Parameter dip
The amount that the signal must drop below a local maximum before a peak is detected. This is a double that can be interpreted as an absolute threshold or relative to the local peak, and if relative, on a linear or decibel scale, depending on the scale parameter. It defaults to 0.0.
-
endIndex
public PortParameter endIndex
The end point of the search. If this number is larger than the length of the input array, then the search is to the end of the array. This is an integer that defaults to MaxInt.
-
input
public TypedIOPort input
The input port. This is required to be an array of doubles
-
maximumNumberOfPeaks
public Parameter maximumNumberOfPeaks
The maximum number of peaks to report. This is an integer that defaults to MaxInt.
-
peakIndices
public TypedIOPort peakIndices
The output port for the indices of the peaks. The type is {int} (array of int).
-
peakValues
public TypedIOPort peakValues
The output port for the values of the peaks. The type is the same as the input port.
-
scale
public StringParameter scale
An indicator of whether dip and squelch should be interpreted as absolute or relative, and if relative, then on a linear scale, in amplitude decibels, or power decibels. If decibels are used, then the corresponding linear threshold is 10^(threshold/N), where N is 20 (for amplitude decibels) or 10 (for power decibels). This parameter is a string with possible values "absolute", "relative linear", "relative amplitude decibels" or "relative power decibels". The default value is "absolute".
-
squelch
public Parameter squelch
The value below which the input is ignored by the algorithm. This is a double that can be interpreted as an absolute number or a relative number, and if relative, on a linear or decibel scale, depending on the scale parameter. For the relative case, the number is relative to the global peak. It defaults to -10.0.
-
startIndex
public PortParameter startIndex
The starting point of the search. If this number is larger than the value of endIndex, the search is conducted backwards (and the results presented in reverse order). If this number is larger than the length of the input array, then the search is started at the end of the input array. This is an integer that defaults to 0.
-
-
Constructor Detail
-
ArrayPeakSearch
public ArrayPeakSearch(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
-
clone
public java.lang.Object clone(Workspace workspace) throws java.lang.CloneNotSupportedException
Override the base class to set type constraints.- Overrides:
clone
in classTypedAtomicActor
- Parameters:
workspace
- The workspace for the new object.- Returns:
- A new instance of ArrayPeakSearch.
- Throws:
java.lang.CloneNotSupportedException
- If a derived class contains an attribute that cannot be cloned.- See Also:
NamedObj.exportMoML(Writer, int, String)
,NamedObj.setDeferringChangeRequests(boolean)
-
fire
public void fire() throws IllegalActionException
Consume at most one array from the input port and produce two arrays containing the indices and values of the identified peaks. If there is no token on the input, then no output is produced. If the input is an empty array, then the same empty array token is produced on both outputs.- Specified by:
fire
in interfaceExecutable
- Overrides:
fire
in classAtomicActor<TypedIOPort>
- Throws:
IllegalActionException
- If there is no director, or if sorting is not supported for the input array.
-
-