Initializes a sparse IIR filter structure.

Syntax

IppStatus ippsIIRSparseInit_32f(IppsIIRSparseState_32f** ppState, const Ipp32f* pNZTaps, const Ipp32s* pNZTapPos, int nzTapsLen1, int nzTapsLen2, const Ipp32f* pDlyLine, Ipp8u* pBuf);

Include Files

ipps.h

Domain Dependencies

Headers: ippcore.h, ippvm.h

Libraries: ippcore.lib, ippvm.lib

Parameters

pNZTaps

Pointer to the array containing the non-zero tap values.

pNZTapPos

Pointer to the array containing positions of the non-zero tap values. The number of elements in the array is nzTapsLen.

nzTapsLen1, nzTapsLen2

Pointer to the destination vector.

pDlyLine

Pointer to the array containing the delay line values.

ppState

Double pointer to the sparse IIR state structure.

pBuf

Pointer to the external buffer for the sparse IIR state structure.

Description

This function initializes a sparse IIR filter state structure ppState in the external buffer pBuf. The size of this buffer must be computed previously by calling the function ippsIIRSparseGetStateSize.

The (nzTapsLen1 + nzTapsLen2)-length array pNZTaps specifies the non-zero taps arranged in the array as follows:

B0, B1, . . ., BnzTapsLen1-1, A0, A1, . . ., AnzTapsLen2-1.

The (nzTapsLen1 + nzTapsLen2)-length array pNZTapPos specifies the non-zero tap positions arranged in the array as follows:

BP0, BP1, . . ., BPnzTapsLen1-1, AP0, AP1, . . ., APnzTapsLen2-1, AP0 ≠ 0

The initialization function copies the values of filter coefficients from the array pNZTaps containing non-zero taps and their positions from the array pNZTapPos into the state structure ppState. The array pDlyLine contains the delay line values.The number of elements in this array is pNZTapPos[nzTapsLen1-1] + pNZTapPos[nzTapsLen1 + nzTapsLen2- 1]. If the pointer to the array pDlyLine is not NULL, the array contents is copied into the state structure ppState, otherwise the delay line values in the state structure are initialized to 0.

Note

The values of nzTapsLen1, nzTapsLen2, pNZTapPos[nzTapsLen -1], and pNZTapPos[nzTapsLen1 + nzTapsLen2- 1] must be equal to those specified in the function ippsIIRSparseGetStateSize.

Return Values

ippStsNoErr

Indicates no error.

ippStsNullPtrErr

Indicates an error when one of the specified pointers is NULL.

ippStsIIROrderErr

Indicates an error if nzTapsLen1 is less than or equal to 0, or nzTapsLen2 is less than 0.

ippStsSparseErr

Indicates an error if positions of the non-zero taps are not in ascending order, or are negative or repetitive; or pNZTapPos[nzTapsLen1] is equal to 0.
Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.