Back to C-ASPT Contents Page
asptAdjlms32f
API Summary
API to create and delete an asptAdjlms32f filters
- DT32S adjlms32fInit (asptAdjlms32f *adjlms,DT32S L, DT32F mu, DT32F *sPath, DT32S sL, DT32F *sPathEst, DT32S seL)
- DT32S adjlms32fInitStatic(asptAdjlms32f *adjlms,DT32S L, DT32F mu, DT32F *sPath, DT32S sL, DT32F *sPathEst, DT32S seL, DT32F *pCof, DT32F *pDat)
- void adjlms32fFree(asptAdjlms32f *adjlms)
API to filter through and update an asptAdjlms32f filters
API to retrieve the properties of an asptAdjlms32f filter
API to set the properties of an asptAdjlms32f filter
- DT32S adjlms32fReset(asptAdjlms32f *adjlms)
- DT32S adjlms32fResetDelayLine(asptAdjlms32f *adjlms)
- DT32S adjlms32fResize(asptAdjlms32f *adjlms, DT32S newLength)
- DT32S adjlms32fSetCoef(asptAdjlms32f *adjlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- DT32S adjlms32fSetDelayLine(asptAdjlms32f *adjlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- adjlms32fSetStepSize( asptAdjlms32f
*adjlms, newStep )
- adjlms32fSetSecPathPtr( asptAdjlms32f
*adjlms, newPtr )
- adjlms32fSetEstSecPathPtr( asptAdjlms32f
*adjlms, newPtr )
- adjlms32fSetSecPathLength( asptAdjlms32f
*adjlms, newLength )
- adjlms32fSetEstSecPathLength( asptAdjlms32f
*adjlms, newLength )
Description
Implements the ADJLMS algorithm. This version is intended for simulation purposes and matches the Matlab asptadjlms and init_adjlms functions.
Copyright
Copyright (c) DSP ALGORITHMS 2003; all rights reserved.
<< Back to top
adjlms32fInit
DT32S adjlms32fInit (asptAdjlms32f *adjlms,DT32S L, DT32F mu, DT32F *sPath, DT32S sL, DT32F *sPathEst, DT32S seL)
Initializes an asptAdjlms32f filter and allocates its necessary storage buffers. - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- adjlms : asptAdjlms32f filter to be dynamically initialized
- L : number of filter coefficients
- mu : step size.
- sPath : pointer to the real secondary path FIR response
- sL : length of the secondary path response sPath
- 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 : sPath/sPathEst is a NULL pointer
- ASPT_RANGE_ERR : L/sL/seL is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
<< Back to top
adjlms32fInitStatic
DT32S adjlms32fInitStatic(asptAdjlms32f *adjlms,DT32S L, DT32F mu, DT32F *sPath, DT32S sL, DT32F *sPathEst, DT32S seL, DT32F *pCof, DT32F *pDat)
Initializes an asptAdjlms32f filter to use pre-allocated memory. - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- adjlms : asptAdjlms32f filter to be statically initialized
- L : number of filter coefficients
- mu : step size.
- sPath : pointer to the real secondary path FIR response
- sL : length of the secondary path response sPath
- 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+sL+2*seL-1) memory locations must be available starting at this memory address
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : sPath/sPathEst/pCof/pDat is a NULL pointer
- ASPT_RANGE_ERR : L/sL/seL is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
<< Back to top
adjlms32fFilterUpdate
DT32F adjlms32fFilterUpdate(asptAdjlms32f *adjlms, DT32F ref, DT32F prim)
Calculates the filter output and updates the coefficients vector according to the ADJLMS algorithm. - Returns :
-
The filter output measured at the sensor. That is the filter output filtered through the physical secondary path.
- Input Parameters :
- adjlms : pointer to asptAdjlms32f filter
- ref : new reference sample.
- prim : primary source sample measured at the sensor
- Remarks :
-
The sensor sample can be obtained by calling adjlms32fGetLastSensorSample().
<< Back to top
adjlms32fFilterOnly
DT32F adjlms32fFilterOnly (asptAdjlms32f *adjlms, DT32F ref)
Calculates the filter output but does not updates the coefficients. It also updates the input power. - Returns :
-
The filter output measured at the sensor. That is the filter output filtered through the physical secondary path.
- Input Parameters :
- adjlms : pointer to asptAdjlms32f filter
- ref : new reference sample.
- Remarks :
-
sensor sample is not calculated.
<< Back to top
adjlms32fFree
void adjlms32fFree(asptAdjlms32f *adjlms)
Frees the allocated memory for this asptAdjlms32f filter. - Returns :
- Input Parameters :
- adjlms : pointer to asptAdjlms32f filter
- Remarks :
-
Use this function only with filters created with adjlms32fInit(). Do not use with asptAdjlms32f filters created using adjlms32fInitStatic().
<< Back to top
adjlms32fReset
DT32S adjlms32fReset(asptAdjlms32f *adjlms)
Resets all filter coefficients to zero.- Returns :
- Input Parameters :
- adjlms : pointer to an asptAdjlms32f filter to be reset
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
adjlms32fResetDelayLine
DT32S adjlms32fResetDelayLine(asptAdjlms32f *adjlms)
Resets all internal delay lines to zero.- Returns :
- Input Parameters :
- adjlms : pointer to the asptAdjlms32f filter to be reset
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
adjlms32fGetCoef
DT32S adjlms32fGetCoef(asptAdjlms32f *adjlms, 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 :
- adjlms : pointer to asptAdjlms32f 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/adjlms->coef is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
adjlms32fSetCoef
DT32S adjlms32fSetCoef(asptAdjlms32f *adjlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal filter coefficients starting from coef[ind] to the contents of newBuf. - Returns :
-
On success returns the number of coefficients initialized, otherwise the error code (negative int).
- Input Parameters :
- adjlms : pointer to asptAdjlms32f 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/adjlms->coef is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
adjlms32fGetDelayLine
DT32S adjlms32fGetDelayLine(asptAdjlms32f *adjlms, 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 :
- adjlms : pointer to asptAdjlms32f 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/adjlms->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
adjlms32fSetDelayLine
DT32S adjlms32fSetDelayLine(asptAdjlms32f *adjlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal delay line samples starting from delayLine[ind] to the contents of the given array. - Returns :
-
On success returns the number of samples initialized, otherwise the error code (negative int).
- Input Parameters :
- adjlms : pointer to asptAdjlms32f filter.
- newBuf : new data 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 :
- 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
adjlms32fResize
DT32S adjlms32fResize(asptAdjlms32f *adjlms, DT32S newLength)
Resizes an asptAdjlms32f filter keeping as much of the filter state as possible. - Returns :
- Input Parameters :
- adjlms : pointer to the asptAdjlms32f 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 asptAdjlms32f filters.