TVec Differentiate(TVec Src, TVec Dst, ref TDiffState State, Double Dt)
Differentiate the signal.
| # | Name | Type | Description |
|---|---|---|---|
| 1 | Src | TVec | source TVec |
| 2 | Dst | TVec | source TVec |
| 3 | State | TDiffState (ref) | |
| 4 | Dt | Double | scalar |
Returns: TVec
Differentiate the signal Src and place the result in Dst, The routine can also be used for streaming data, if the value of the State parameter is preserved between consecutive calls. dT defines the sampling period. Src can be complex or real. For setting the initial conditions to other then 0 see the TDiffState description.
The following formula is used for numeric differentiation:
y[i] = (x[i] - x[i-2]) / (2 * dT) dT ... sampling period x - input y - output
The filter does not preserve linear phase, but it is more accurate than:
y[i] = (x[i]-x[i-1])/dT
which can be rewriten as:
y[i] = ((x[i] - x[i-1]) + (x[i-1] - x[i-2]))/2 * 1/dT
To apply a differentiator preserving linear phase see the Dew.Signal.Units.OptimalFir.RemezImpulse and Dew.Signal.Units.SignalUtils.KaiserImpulse routines.
Note
Record types as well as all other variables are automatically initialized to zero, if they are declared as fields of an object. The state variable of the Differentiate routine has to be initialized before it can be used, if declared within a routine.