SignalUtils.Kaiser Method

function Kaiser(const Src: TVec; Beta: Double): TVec;

Kaiser window.

#NameTypeDescription
1SrcTVec
2BetaDoublescalar

Returns: TVec

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

Indexed: function Kaiser(const Src: TVec; Beta: Double; Index: Integer; Len: Integer): TVec;

Kaiser window.

#NameTypeDescription
1SrcTVec
2BetaDoublescalar
3IndexIntegerstart index
4LenIntegerelement count

Returns: TVec

Remarks:

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