A Hopf, Skip and a Jump
DetectorBank Features

Explantion and suggested usage of the Features parameter of the DetectorBank.

Three aspects of DetectorBank performance are controlled by this parameter:

The default Features set is: runge_kutta | freq_unnormalized | amp_normalized

If you want to set a bandwidth for any of the detectors (rather than using the default minimum-bandwidth detectors) you must use the Runge-Kutta method and amplitude normalisation.

Numerical Method

Options: runge_kutta or central_difference

Two numerical methods are supplied: the fourth order Runge-Kutta method and the central difference approximation. Runge-Kutta is recommended for most situations; central difference should only be used for minimum-bandwidth detectors in situations where calculation time is an important factor, as the getZ calculations will be performed roughly three times faster. If you want to set a specific detector bandwidth and/or getZ calculation time is not the most important thing, please use Runge-Kutta.

Using numerical approximations introduces errors as the frequencies increase. Runge-Kutta detectors give reliable results up to higher frequencies than central difference. Frequency normalisation can be used to extend the range of the detectors somewhat, without increasing execution time for a realtime input stream. Frequency shifting is also used to extend the system bandwidth to the Nyquist frequency, although this requires the input samples to be frequency shifted, so would slow down realtime detection.

Frequency Normalisation

Options: freq_unnormalized or search_normalized

As discussed above, search normalisation can be used to extend the system bandwidth.

Search normalisation iteratively checks if other frequencies (within certain bounds from the original frequency) give a better response and, if so, adjusts the detector's characteristic frequency. This is applied at DetectorBank construction time, so has no impact on the time taken to execute getZ.

Note that, as explained above, frequency shifting is automatically applied above a given threshold, however this threshold is higher when frequency normalisation is used.

Amplitude Normalisation

Options: amp_unnormalized or amp_normalized

As the underlying system is nonlinear, differences in input parameters, including bandwidth , numerical method, frequency normalisation, damping factor and gain result in output amplitudes which are not linearly related to the input. This means that any analysis of the system output which relies on amplitude will be affected by detectors with different bandwidths or different gain values across multiple DetectorBanks. We therefore introduce amplitude normalisation, which scales the getZ output to be in the range -1 to 1.