Initializes a sparse IIR filter structure.


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

Include Files


Domain Dependencies

Headers: ippcore.h, ippvm.h

Libraries: ippcore.lib, ippvm.lib



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


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.


Pointer to the array containing the delay line values.


Double pointer to the sparse IIR state structure.


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


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.


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


Indicates no error.


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


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


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.