SignalUtils::Kaiser Function

Overload List

#SignatureDescription
1TVec *Kaiser(TVec *Src, double Beta);Kaiser window.
2TVec *Kaiser(TVec *Src, double Beta, int Index, int Len);Kaiser window.

Overload 1: TVec *Kaiser(TVec *Src, double Beta);

Kaiser window.

#NameTypeDescription
1SrcTVec *
2Betadouble
Remarks:

Multiplies Src in place by the Kaiser window. For a unit input and alpha = (N-1)/2 the i-th sample becomes

w[i] = (I_0(betasqrt(1-((i-alpha)/alpha)^2)))/I_0(beta), 0 <= i <= N-1

where I_0 is the zeroth-order modified Bessel function (see BesselI0) and beta (Beta) trades main-lobe width against side-lobe attenuation: larger beta gives more leakage suppression and lower frequency resolution. The endpoints (i=0 and i=N1i=N-1) make the radicand zero and are forced to 0. Domain: beta >= 0, N >= 1. For a required side-lobe attenuation use KaiserBetaWindow (spectrum analysis) or KaiserBetaFir (FIR design) to pick beta. The Index..Index+Len-1 range is validated against Src and an out-of-range request raises; finite input yields no NaN.

References:

[1] Discrete-time signal processing, Oppenheim and Schafer, Prentice-Hall, 1989.

See Also: SignalUtils::Hanning, SignalUtils::FirImpulse, SignalUtils::SignalWindow, SignalUtils::KaiserBetaWindow, SignalUtils::KaiserBetaFir
Declared in Dew::Signal::Units::SignalUtils · Dew.Signal/Units.SignalUtils.h · Cross-compiler

Overload 2: TVec *Kaiser(TVec *Src, double Beta, int Index, int Len);

Kaiser window.

#NameTypeDescription
1SrcTVec *
2Betadouble
3Indexint
4Lenint
Remarks:

Applies Kaiser window to Src vector from element at Index to element at Index + Len - 1.

Declared in Dew::Signal::Units::SignalUtils · Dew.Signal/Units.SignalUtils.h · Cross-compiler