Back to C-ASPT Contents Page
asptRtadjlms32f
API Summary
API to create and delete an asptRtadjlms32f filters
- DT32S rtadjlms32fInit (asptRtadjlms32f *rtadjlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL)
- DT32S rtadjlms32fInitStatic(asptRtadjlms32f *rtadjlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL, DT32F *pCof, DT32F *pDat)
- void rtadjlms32fFree(asptRtadjlms32f *rtadjlms)
API to filter through and update an asptRtadjlms32f filters
API to retrieve the properties of an asptRtadjlms32f filter
API to set the properties of an asptRtadjlms32f filter
- DT32S rtadjlms32fReset(asptRtadjlms32f *rtadjlms)
- DT32S rtadjlms32fResetDelayLine(asptRtadjlms32f *rtadjlms)
- DT32S rtadjlms32fResize(asptRtadjlms32f *rtadjlms, DT32S newLength)
- DT32S rtadjlms32fSetCoef(asptRtadjlms32f *rtadjlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- DT32S rtadjlms32fSetDelayLine(asptRtadjlms32f *rtadjlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- rtadjlms32fSetStepSize( asptRtadjlms32f
*rtadjlms, newStep )
- rtadjlms32fSetEstSecPathPtr( asptRtadjlms32f
*rtadjlms, newPtr )
- rtadjlms32fSetEstSecPathLength( asptRtadjlms32f
*rtadjlms, newLength )
Description
Implements the Real-Time ADJLMS 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
rtadjlms32fInit
DT32S rtadjlms32fInit (asptRtadjlms32f *rtadjlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL)
Initializes an asptRtadjlms32f filter and allocates its necessary storage buffers. - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- rtadjlms : pointer to asptRtadjlms32f 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
rtadjlms32fInitStatic
DT32S rtadjlms32fInitStatic(asptRtadjlms32f *rtadjlms,DT32S L, DT32F mu, DT32F *sPathEst, DT32S seL, DT32F *pCof, DT32F *pDat)
Initializes an asptRtadjlms32f filter to use pre-allocated memory. - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- rtadjlms : pointer to asptRtadjlms32f 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
rtadjlms32fFilterUpdate
DT32F rtadjlms32fFilterUpdate(asptRtadjlms32f *rtadjlms, DT32F ref, DT32F sen)
Calculates the filter output and updates the coefficients vector according to the ADJLMS algorithm. - Returns :
-
The filter output sample to be fed to the secondary source.
- Input Parameters :
- rtadjlms : pointer to the asptRtadjlms32f filter
- ref : new reference sample.
- sen : last measured sensor sample
<< Back to top
rtadjlms32fFilterOnly
DT32F rtadjlms32fFilterOnly(asptRtadjlms32f *rtadjlms, 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 :
- rtadjlms : pointer to the asptRtadjlms32f filter
- ref : new reference sample.
<< Back to top
rtadjlms32fFree
void rtadjlms32fFree(asptRtadjlms32f *rtadjlms)
Frees the allocated memory for this asptRtadjlms32f filter. - Returns :
- Input Parameters :
- rtadjlms : pointer to the asptRtadjlms32f filter
- Remarks :
-
Use this function only with filters created with rtadjlms32fInit(). Do not use with asptRtadjlms32f filters created using rtadjlms32fInitStatic().
<< Back to top
rtadjlms32fReset
DT32S rtadjlms32fReset(asptRtadjlms32f *rtadjlms)
Resets all filter coefficients to zero.- Returns :
- Input Parameters :
- rtadjlms : pointer to an asptRtadjlms32f filter to be reset
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtadjlms32fResetDelayLine
DT32S rtadjlms32fResetDelayLine(asptRtadjlms32f *rtadjlms)
Resets all internal delay lines to zero. - Returns :
- Input Parameters :
- rtadjlms : pointer to an asptRtadjlms32f filter to be reset
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtadjlms32fGetCoef
DT32S rtadjlms32fGetCoef(asptRtadjlms32f *rtadjlms, 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 :
- rtadjlms : pointer to an asptRtadjlms32f 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/rtadjlms->coef is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtadjlms32fSetCoef
DT32S rtadjlms32fSetCoef(asptRtadjlms32f *rtadjlms, 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 :
- rtadjlms : pointer to an asptRtadjlms32f 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 :
- rtadjlms->coef is updated
- Error Conditions
- ASPT_NULL_PTR_ERR : newCoef/rtadjlms->coef is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtadjlms32fGetDelayLine
DT32S rtadjlms32fGetDelayLine(asptRtadjlms32f *rtadjlms, 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 :
- rtadjlms : pointer to an asptRtadjlms32f 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/rtadjlms->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
rtadjlms32fSetDelayLine
DT32S rtadjlms32fSetDelayLine(asptRtadjlms32f *rtadjlms, 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 :
- rtadjlms : pointer to an asptRtadjlms32f 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 :
- adjlms->delayLine is updated
- Error Conditions
- ASPT_NULL_PTR_ERR : newBuf/adjlms->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
rtadjlms32fResize
DT32S rtadjlms32fResize(asptRtadjlms32f *rtadjlms, DT32S newLength)
Resizes an asptRtadjlms32f filter keeping as much of the filter state as possible. - Returns :
- Input Parameters :
- rtadjlms : pointer to the asptRtadjlms32f 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 asptRtadjlms32f filters.