Back to C-ASPT Contents Page
asptRtfxlms32f
API Summary
API to create and delete an asptRtfxlms32f filters
- DT32S rtfxlms32fInit (asptRtfxlms32f *rtfxlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL)
- DT32S rtfxlms32fInitStatic(asptRtfxlms32f *rtfxlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL, DT32F *pCof, DT32F *pDat)
- void rtfxlms32fFree(asptRtfxlms32f *rtfxlms)
API to filter through and update an asptRtfxlms32f filters
API to retrieve the properties of an asptRtfxlms32f filter
API to set the properties of an asptRtfxlms32f filter
- DT32S rtfxlms32fReset(asptRtfxlms32f *rtfxlms)
- DT32S rtfxlms32fResetDelayLine(asptRtfxlms32f *rtfxlms)
- DT32S rtfxlms32fResize(asptRtfxlms32f *rtfxlms, DT32S newLength)
- DT32S rtfxlms32fSetCoef(asptRtfxlms32f *rtfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- DT32S rtfxlms32fSetDelayLine(asptRtfxlms32f *rtfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- rtfxlms32fSetStepSize( asptRtfxlms32f
*rtfxlms, newStep )
- rtfxlms32fSetEstSecPathPtr( asptRtfxlms32f
*rtfxlms, newPtr )
- rtfxlms32fSetEstSecPathLength( asptRtfxlms32f
*rtfxlms, newLength )
Description
Implements the Real-Time FXLMS algorithm. This version is intended for real-time application development. The filter calculates the signal used to drive the secondary source and is fed with the reference signal and sensor signal. The filtering through the physical secondary transfer functions occurs externally.
Copyright
Copyright (c) DSP ALGORITHMS 2003; all rights reserved.
<< Back to top
rtfxlms32fInit
DT32S rtfxlms32fInit (asptRtfxlms32f *rtfxlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL)
Initializes an asptRtfxlms32f filter and allocates its necessary storage buffers. - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- rtfxlms : asptRtfxlms32f filter to be initialized
- L : number of filter coefficients
- mu : step size.
- sPathEst : pointer to the estimated secondary path FIR response
- seL : length of the estimated secondary path response sPathEst
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : sPathEst is a NULL pointer
- ASPT_RANGE_ERR : L/seL is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
<< Back to top
rtfxlms32fInitStatic
DT32S rtfxlms32fInitStatic(asptRtfxlms32f *rtfxlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL, DT32F *pCof, DT32F *pDat)
Initializes an asptRtfxlms32f filter to use pre-allocated memory. - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- rtfxlms : asptRtfxlms32f filter to be initialized
- L : number of filter coefficients
- mu : step size.
- sPathEst : pointer to the estimated secondary path FIR response
- seL : length of the estimated secondary path response sPathEst
- pCof : pointer to a pre-allocated memory block to be used for the
adaptive filter coefficients. At least L memory locations must be available starting at this memory address.
- pDat : pointer to a pre-allocated memory block to be used for data
storage. At least (L+2*seL) memory locations must be available starting at this memory address
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : sPathEst/pCof/pDat is a NULL pointer
- ASPT_RANGE_ERR : L/seL is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
<< Back to top
rtfxlms32fFilterUpdate
DT32F rtfxlms32fFilterUpdate(asptRtfxlms32f *rtfxlms, DT32F ref, DT32F sen)
Calculates the filter output and updates the coefficients vector according to the RTFXLMS algorithm. - Returns :
-
The filter output sample to be fed to the secondary source.
- Input Parameters :
- rtfxlms : pointer to the asptRtfxlms32f filter
- ref : new reference sample.
- sen : last measured sensor sample
<< Back to top
rtfxlms32fFilterOnly
DT32F rtfxlms32fFilterOnly(asptRtfxlms32f *rtfxlms, DT32F ref)
Calculates the filter output but does not updates the coefficients. It also updates the input power and internal delay lines. - Returns :
-
The filter output sample to be fed to the secondary source.
- Input Parameters :
- rtfxlms : pointer to the asptRtfxlms32f filter
- ref : new reference sample.
<< Back to top
rtfxlms32fFree
void rtfxlms32fFree(asptRtfxlms32f *rtfxlms)
Frees the allocated memory for this asptRtfxlms32f filter. - Returns :
- Input Parameters :
- rtfxlms : pointer to theasptRtfxlms32f filter
- Remarks :
-
Use this function only with filters created with rtfxlms32fInit(). Do not use with asptRtfxlms32f filters created using rtfxlms32fInitStatic().
<< Back to top
rtfxlms32fReset
DT32S rtfxlms32fReset(asptRtfxlms32f *rtfxlms)
Resets all filter coefficients to zero.- Returns :
- Input Parameters :
- rtfxlms : pointer to an asptRtfxlms32f filter to be reset
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtfxlms32fResetDelayLine
DT32S rtfxlms32fResetDelayLine(asptRtfxlms32f *rtfxlms)
Resets all internal delay lines to zero. - Returns :
- Input Parameters :
- rtfxlms : pointer to an asptRtfxlms32f filter to be reset
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtfxlms32fGetCoef
DT32S rtfxlms32fGetCoef(asptRtfxlms32f *rtfxlms, DT32F *buf, DT32S ind, DT32S N, DT32S flip)
Copies N internal filter coefficients starting from coef[ind] to dstBuf. - Returns :
-
On success returns the number of coefficients copied, otherwise the error code (negative int).
- Input Parameters :
- rtfxlms : pointer to an asptRtfxlms32f filter.
- dstBuf : destination buffer.
- ind : index to the first coefficient to be copied.
- N : number of coefficients to be copied.
- flip : if not 0, will flip the coefficients order
- Output Parameters :
- Error Conditions
- ASPT_NULL_PTR_ERR : dstBuf/rtfxlms->coef is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtfxlms32fSetCoef
DT32S rtfxlms32fSetCoef(asptRtfxlms32f *rtfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal filter coefficients starting from coef[ind] to the contents of newCoef. - Returns :
-
On success returns the number of coefficients initialized, otherwise the error code (negative int).
- Input Parameters :
- rtfxlms : pointer to an asptRtfxlms32f filter to be set.
- newCoef : new coefficients vector.
- ind : index to the first coefficient to be set.
- N : number of coefficients to be set.
- flip : if not 0, will copy the coefficients in reverse order
- Output Parameters :
- Error Conditions
- ASPT_NULL_PTR_ERR : newCoef/rtfxlms->coef is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtfxlms32fGetDelayLine
DT32S rtfxlms32fGetDelayLine(asptRtfxlms32f *rtfxlms, DT32F *buf, DT32S ind, DT32S N, DT32S flip)
Copies N internal delay line samples starting from delayLine[ind] to dstBuf. - Returns :
-
On success returns the number of samples copied, otherwise the error code (negative int).
- Input Parameters :
- rtfxlms : pointer to an asptRtfxlms32f filter.
- dstBuf : destination buffer.
- ind : index to the first sample to be copied.
- N : number of samples to be copied.
- flip : if not 0, will flip the samples order.
- Output Parameters :
- Error Conditions
- ASPT_NULL_PTR_ERR : dstBuf/rtfxlms->delayLine is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
- Remarks :
-
Samples are stored in dstBuf with newest sample at index 0, and oldest at index N-1, when flip == 0.
<< Back to top
rtfxlms32fSetDelayLine
DT32S rtfxlms32fSetDelayLine(asptRtfxlms32f *rtfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal delay line samples starting from delayLine[ind] to the contents of newBuf. - Returns :
-
On success returns the number of samples initialized, otherwise the error code (negative int).
- Input Parameters :
- rtfxlms : pointer to an asptRtfxlms32f filter.
- newBuf : new data buffer.
- ind : index to the first sample to be initialized.
- N : number of samples to be initialized.
- flip : if not 0, will flip the samples order
- Output Parameters :
- rtfxlms->delayLine is updated
- Error Conditions
- ASPT_NULL_PTR_ERR : newBuf/rtfxlms->delayLine is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
- Remarks :
-
Samples assumed to be stored in newBuf with newest sample at index 0, and oldest at index N-1, when flip == 0.
<< Back to top
rtfxlms32fResize
DT32S rtfxlms32fResize(asptRtfxlms32f *rtfxlms, DT32S newLength)
Resizes an asptRtfxlms32f filter keeping as much of the filter state as possible. - Returns :
- Input Parameters :
- rtfxlms : pointer to the asptRtfxlms32f filter to be resized.
- newLen : required new filter length.
- Error Conditions
- ASPT_NO_ERR : Resizing is success
- ASPT_NULL_PTR_ERR : NULL pointer error
- ASPT_RANGE_ERR : newLength is not a valid input value
- ASPT_NO_MEM_ERR : Could not allocate the necessary filter storage
- Remarks :
-
Use this function only with dynamically allocated asptRtfxlms32f filters.