SignalUtils::Differentiate Function

TVec *Differentiate(TVec *Src, TVec *Dst, TDiffState &State, double Dt);

Differentiate the signal.

#NameTypeDescription
1SrcTVec *
2DstTVec *
3StateTDiffState &
4Dtdouble
Remarks:

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 OptimalFir::RemezImpulse and 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.

See Also: SignalUtils::Integrate, OptimalFir::RemezImpulse, SignalUtils::KaiserImpulse, SignalUtils::FirImpulse
Declared in Dew::Signal::Units::SignalUtils · Dew.Signal/Units.SignalUtils.h · Cross-compiler