type TSignalEnvelopeDetector = class(TSignalDecimator);
Detects the amplitude envelope of a signal.
A type-III Hilbert transformer produces a 90-degree phase-shifted copy y of the (delay-compensated) input x; the analytic-signal magnitude is the envelope
e[i] = sqrt(x[i-D]^2 + y[i]^2),
envelope[i] = sqrt(sqr(X[i-HilbertDelay]) + sqr(Y[i]));
where D is the Hilbert filter group delay. For an amplitude-modulated carrier x[i]=A[i] sin(omega_c i) the envelope recovers the modulator e[i] ~= |A[i]| (the carrier is removed). This is an alternative to the absolute-value envelope of TSignalDecimator: slower, but it can give significant noise reduction. The output is decimated by Factor. HilbertRipple and HilbertTransBW set the transformer's passband ripple and transition bandwidth.
Properties
| Name | Type | Description |
|---|---|---|
| Active | Boolean | Set active to false to suppress the propagation of the Pull request and the subsequent call to the Update method. |
| AudioSignal | Boolean | Adjust filters for audio signal. |
| BandWidth | Double | Return the bandwidth of the signal. |
| BandwidthH | Double | Returns the upper bandwidth edge of the signal. |
| BandwidthL | Double | Returns the lower bandwidth edge of the signal. |
| BlockAssign | Boolean | Block streaming of specific properties when storing only a "template". |
| ChannelCount | Integer | Get or set the number of channels multiplexed in the data property. |
| Complex | Boolean | Set this property to true, to request computation using complex numbers. |
| Continuous | Boolean | If True, the component will pass on the udpate request to the connected component. |
| Data | TVec | Stores the result of the processing. |
| Dt | Double | Time between two consecutive samples. |
| EditorActive | Boolean | Returns True, if the component editor is displayed. |
| EnvelopeFactor | Integer | Defines the filter stage at which to apply envelope detection. |
| ExternalTaps | Boolean | Enables user specified filter. |
| Factor | Integer | Decimation/Interpolation factor. |
| FilterDelay | Double | Returns the filter delay in number of samples of the final sampling frequency. |
| FloatPrecision | TMtxFloatPrecision | Set this property to request computation in 32bit/64bit precision with real/complex numbers. |
| FloatPrecisionLock | Boolean | Set this property to true to lock changes to FloatPrecision property. |
| HalfBand | Boolean | Filters out upper half of the bandwidth. |
| HilbertRipple | Double | Passband ripple of the type III Hilbert transformer. |
| HilbertTransBW | Double | Transition bandwidth of the type III Hilbert transformer normalized to a sampling frequency of 2 Hz. |
| HzRes | Double | Frequency resolution obtained, if an FFT algorithm would be run on the data. |
| Initialized | Boolean | When set to false, the next call to the update method will reinitialize the FIR filters. |
| Input | TAnalysis | Connector property to obtain a pointer to the TSignal component holding the data to be processed. |
| IsDouble | Boolean | Set this property to false, to request computation in 32bit floating point precision, 64bit, if true. |
| Item | Double | Default property to access values of a real signal. |
| ItemNumber | Integer | Number to label the object when it is an item in the List. |
| LastStageFilterOnly | Boolean | The component lowers the sampling frequency in steps by a factor of two. |
| Length | Integer | Get or set the length of the signal in samples. |
| Marks | TMarkList | Stores the time stamps and amplitude of selected samples. |
| MaxAmplt | Double | Stores the maximum amplitude of the signal found by the MinMax method. |
| MaxX | Double | Use the MaxX property to store the time stamp (in seconds) of the right most sample. |
| MinAmplt | Double | Stores the minimum amplitude of the signal found by the MinMax method. |
| MinX | Double | Use the MinX property to store the time stamp of the left-most sample. |
| OnAfterUpdate | TNotifyEvent | The event is triggered after the call to the Update method. |
| OnBeforeUpdate | TNotifyEvent | The event is triggered just before the call to the Update method. |
| OnDisplayUpdate | TNotifyEvent | The event is triggered after the OnAfterUpdate event. Use this event to update any associated charts or graphs or result tables. |
| OnGetFilterTaps | TNotifyEvent | Triggered when ExternalTaps is false. |
| OnGetInput | TNotifyEvent | If the Input property is not assigned, the component will call OnGetInput. |
| OnNotifyUpdate | TNotifyEvent | The event is called after a call to InternalUpdate, OnAfterUpdate and OnDisplayUpdate from within the Update method. |
| OnParameterUpdate | TNotifyEvent | The event is triggered when ParamUpdate method is called. The ParamUpdate method is usually called by component editors when a value was changed by the user and the editor was "Live". |
| PipeState | TPipeState | Returns the state of the pipe after the last update. |
| Reference | TReferenceList | Stores a list of components that have to be notified, when this component is destroyed. |
| Ripple | Double | Maximum ripple allowed in the passband and in the stopband. |
| SamplingFrequency | Double | Defines the sampling frequency of the signal. |
| SamplingTime | Double | The length of the signal in seconds. |
| ScaleFactor | Double | Defines the factor by which the signal will be scaled. |
| SuspendNotifyUpdate | Boolean | Set this property to True, to prevent calling OnNotifyUpdate from the Update Method. |
| TransBW | Double | Defines the width of the transition band of the FIR filter used for interpolation/decimation. |
| UsesInputs | Boolean | Set it to True to indicate, that valid signals will be connected to the Input or Inputs properties. |
Methods
| Name | Description |
|---|---|
| AllowStreaming | Returns the negatated value of BlockAssign. |
| Append | Appends Sample to the end of the signal. |
| Assign | Assign values of all published properties from Source. |
| AssignTemplate | Assign values of "template-like" published properties from Source. |
| Copy | Copies signal Data and sampling frequency information. |
| Crest | Compute the CREST parameter. |
| EditorClass | To be overriden in descendanr classses. |
| InitFilters | FirTaps and FinalStageTaps do not hold valid filter taps until InitFilters has been called. |
| InputsDirty | If all Inputs[i] are dirty the function returns true. |
| InternalPull | When called, the method will pass Update requests recursively to all connected objects. |
| Invalidate | Notifies all connected components that this component has fresh data. |
| LoadFromStream | Load the component from Src stream. |
| LoadTemplateFromFile | Load a template from file. |
| LoadTemplateFromStream | Load a template from stream. |
| MarksToStrings | Convert marks to strings. |
| MinMax | Find minimum and maximum amplitude and store the result in the MinAmplt and MaxAmplt properties. |
| ParamUpdate | The method can be assigned to some other component even handler, as a notification that a parameter has changed and that Self should consider a recalculation. |
| Peak | Find the maximum deviation of the signal from its mean value. |
| PipeReset | Recursively processes all connected components backward and calls Reset method. |
| Process | Filter Src and place the result in Dst. |
| Pull | Request recalculation of the entire chain of all connected components. |
| PullUntilEnd | Calls Pull until pipeEnd is returned. |
| Reset | The same as setting Initialized to false. |
| SaveTemplateToFile | Save template to file. |
| SaveTemplateToStream | Save template to stream. |
| SaveToStream | Save the component to Dst stream. |
| Size | Assign the size of the signal from Src. |
| Update | Request recalculation of the data and place the result in Self. |
| UpdateNotify | Call this method only, if SuspendNotifyUpdate is True. |
| ValuesToStrings | Convert values to strings. |