
ArrayPeakSearch |
ptolemy.actor.lib.ArrayPeakSearch |
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.
Author(s): Edward A. Lee
Version:$Id: ArrayPeakSearch.java,v 1.28 2005/10/28 19:20:13 cxh Exp $
Pt.Proposed Rating:Yellow (eal)
Pt.Accepted Rating:Red (cxh)
input
The input port. This is required to be an array of doubles
peakIndices
The output port for the indices of the peaks. The type is
{int} (array of int).
peakValues
The output port for the values of the peaks. The type is the
same as the input port.
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
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.
maximumNumberOfPeaks
The maximum number of peaks to report.
This is an integer that defaults to MaxInt.
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
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
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.