CalcSincBPKernel

Declaration: CalcSincBPKernel(KLength, Windowing: integer; CutOffFQ1, CutOffFQ2: double; var FilterKernel: TDoubleArray): integer;
Calculates the coefficients of a band-pass sinc filter. The coefficients which are returned in the array FilterKernel can be used by the functions KFilterSpectra and KFilterSpectraEdgeSpecial to apply a band-pass filter to a signal. The open array FilterKernel is automatically resized to contain KLength elements.

The parameter KLength determines the roll-off of the filter. The parameters CutOffFQ1 and CutOffFQ2 control the cutoff frequencies, which are specified as a fraction of the sampling rate. Thus the cutoff frequencies may assume values between 0 and 0.500. The two frequencies may be specified in any order, if the first frequency is higher than the second they are automatically exchanged by the routine.

The following figure shows the influence of the kernel length on the roll-off at a fixed cutoff frequency (left diagram, fc1 = 0.1, fc2 = 0.35) and the roll-off of different cutoff frequencies using the same kernel length (right diagram, KLength = 41).

The parameter Windowing determines the type of windowing applied to the filter kernel. Currently the following windowing modes are supported:

0 ... no windowing
1 ... Hamming window
2 ... Blackman window

The function returns the following error codes:

 0 ... everything is ok
-1 ... KLength must be odd
-2 ... KLength is out of range (valid: 3 to 999)
-3 ... invalid Windowing
-4 ... cutoff frequency is out of range

Hint: Please note that the computation time of a filter is directly proportional to the length of the filter kernel.