Back to C-ASPT Contents Page
asptRtfdfxlms32f
API Summary
API to create and delete asptRtfdfxlms32f filters
- DT32S rtfdfxlms32fInit(asptRtfdfxlms32f *rtfdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPathEst,DT32S seL,DT32S *ip,DT32F *w)
- DT32S rtfdfxlms32fInitStatic(asptRtfdfxlms32f *rtfdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPathEst,DT32S seL,DT32F *pCof,DT32F *pDat,DT32S *ip,DT32F *w)
- void rtfdfxlms32fFree(asptRtfdfxlms32f *rtfdfxlms)
API to filter and update asptRtfdfxlms32f filters
API to retrieve the properties of asptRtfdfxlms32f filters
API to set the properties of asptRtfdfxlms32f filters
- DT32S rtfdfxlms32fReset(asptRtfdfxlms32f *rtfdfxlms)
- DT32S rtfdfxlms32fResetDelayLine(asptRtfdfxlms32f *rtfdfxlms)
- DT32S rtfdfxlms32fResize(asptRtfdfxlms32f *rtfdfxlms, DT32S newLen, DT32S newBlock)
- DT32S rtfdfxlms32fSetCoef(asptRtfdfxlms32f *rtfdfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- DT32S rtfdfxlms32fSetEstSecPath(asptRtfdfxlms32f *rtfdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
- rtfdfxlms32fSetStepSize( asptRtfdfxlms32f
*rtfdfxlms, newSs )
- rtfdfxlms32fSetConstrain( asptRtfdfxlms32f
*rtfdfxlms, newC )
- rtfdfxlms32fSetEstSecPathLength( asptRtfdfxlms32f
*rtfdfxlms, newL )
Description
Implements the Real-Time Frequency Domain 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
rtfdfxlms32fInit
DT32S rtfdfxlms32fInit(asptRtfdfxlms32f *rtfdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPathEst,DT32S seL,DT32S *ip,DT32F *w)
Initializes an asptRtfdfxlms32f filter and allocates its necessary storage buffers - Returns :
-
Error code. On failure, the filterLength member of the structure is also set to zero.
- Input Parameters :
- rtfdfxlms : asptRtfdfxlms32f filter to be initialized
- M : number of filter coefficients
- L : block length (number of new samples each block)
- mu : step size
- cs : constrained (1) or unconstrained (0) filter.
- sPathEst : pointer to the estimated secondary path FIR response
- seL : length of the estimated secondary path response sPathEst
- ip : fft bit reversal table
- w : fft twiddle factor table
- Output Parameters :
- rtfdfxlms32f is initialized using the given input parameters
- Error Conditions
- ASPT_NO_ERR : Initialization success
- ASPT_NULL_PTR_ERR : ip/w is a NULL pointer
- ASPT_RANGE_ERR : L/m/seL is not a valid input value
- ASPT_NO_MEM_ERR : Could not allocate the necessary filter storage
<< Back to top
rtfdfxlms32fInitStatic
DT32S rtfdfxlms32fInitStatic(asptRtfdfxlms32f *rtfdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPathEst,DT32S seL,DT32F *pCof,DT32F *pDat,DT32S *ip,DT32F *w)
Initializes an asptRtfdfxlms32f filter to use pre-allocated memory blocks. - Returns :
-
Error code. On failure, the filterLength member of the structure is also set to zero.
- Input Parameters :
- rtfdfxlms : asptRtfdfxlms32f filter to be initialized
- M : number of filter coefficients
- L : block length (number of new samples each block)
- mu : step size
- cs : constrained (1) or unconstrained (0) filter.
- 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 in program memory
of at least [2*fftLength] DT32F locations to be used for the filter coefficients and estimated sec. source coefficients.
- pDat : pointer to a pre-allocated memory in data memory of at least
[C1 + 3*fftLength + 2*(fftLength/2+1)] DT32F locations to be used for data storage.
- ip : fft bit reversal table
- w : fft twiddle factor table
- Output Parameters :
- rtfdfxlms is initialized using the given input parameters
- Error Conditions
- ASPT_NO_ERR : Initialization success
- ASPT_NULL_PTR_ERR : ip/w/pCof/pDat is a NULL pointer
- ASPT_RANGE_ERR : L/m/seL is not a valid input value
- ASPT_NO_MEM_ERR : Could not allocate the necessary filter storage
- Remarks :
-
fftLength = 2^(nextpow2(L+M-1)). C1 = fftLength - blockLength.
<< Back to top
rtfdfxlms32fFilterUpdate
DT32S rtfdfxlms32fFilterUpdate(asptRtfdfxlms32f *rtfdfxlms, DT32F *ref, DT32F *sens, DT32F *out)
Calculates the filter output and updates the coefficients vector according to the FDFXLMS algorithm. - Returns :
- Input Parameters :
- rtfdfxlms : pointer to the asptRtfdfxlms32f filter
- ref : new block of the reference samples
- sen : last measured block of sensor samples
Output Parameters
- act : array to store the block of actuator samples
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtfdfxlms32fFilterOnly
DT32S rtfdfxlms32fFilterOnly(asptRtfdfxlms32f *rtfdfxlms, DT32F *ref, DT32F *out)
Calculates the filter output but does not updates the coefficients. It also updates the input power and internal data buffers. - Returns :
- Input Parameters :
- rtfdfxlms : pointer to the rtfdfxlms filter
- ref : pointer to the input block of samples
Output Parameters
- act : pointer to store the filter output samples
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtfdfxlms32fFree
void rtfdfxlms32fFree(asptRtfdfxlms32f *rtfdfxlms)
Frees the allocated memory for this asptRtffxlms32f filter. - Returns :
- Input Parameters :
- rtfdfxlms : pointer to the rtfdfxlms32f filter
- Remarks :
-
Use this function only with filters created with rtfdfxlms32fInit(). Do not use with asptRtfdfxlms32f filters created using rtfdfxlms32fInitStatic().
<< Back to top
rtfdfxlms32fReset
DT32S rtfdfxlms32fReset(asptRtfdfxlms32f *rtfdfxlms)
Resets all filter coefficients to zero.- Returns :
- Input Parameters :
- rtfdfxlms : pointer to an asptRtfdfxlms32f filter to be reset.
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtfdfxlms32fResetDelayLine
DT32S rtfdfxlms32fResetDelayLine(asptRtfdfxlms32f *rtfdfxlms)
Resets the internal delay line to zeros.- Returns :
- Input Parameters :
- rtfdfxlms : pointer to an asptRtfdfxlms32f filter to be reset.
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
rtfdfxlms32fGetCoef
DT32S rtfdfxlms32fGetCoef(asptRtfdfxlms32f *rtfdfxlms, DT32F *dstBuf, 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 :
- rtfdfxlms : pointer to an asptRtfdfxlms32f 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.
- Error Conditions
- ASPT_NULL_PTR_ERR : dstBuf/rtfdfxlms->wFreq is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtfdfxlms32fSetCoef
DT32S rtfdfxlms32fSetCoef(asptRtfdfxlms32f *rtfdfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
Initializes N internal (time domain) filter coefficients starting from coef[ind] to the contents of newCoef. - Returns :
-
On success returns the number of coefficients copied, otherwise the error code (negative int).
- Input Parameters :
- rtfdfxlms : pointer to an asptRtfdfxlms32f 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.
- Error Conditions
- ASPT_NULL_PTR_ERR : newCoef/rtfdfxlms->wFreq is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtfdfxlms32fGetEstSecPath
DT32S rtfdfxlms32fGetEstSecPath(asptRtfdfxlms32f *rtfdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
Copies N internal (time domain) coefficients from the estimated secondary path filter starting from coef[ind] to dstBuf. - Returns :
-
On success returns the number of coefficients copied, otherwise the error code (negative int).
- Input Parameters :
- rtfdfxlms : pointer to an asptRtfdfxlms32f 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.
- Error Conditions
- ASPT_NULL_PTR_ERR : dstBuf/rtfdfxlms->secPathEst is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtfdfxlms32fSetEstSecPath
DT32S rtfdfxlms32fSetEstSecPath(asptRtfdfxlms32f *rtfdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
Initializes N internal (time domain) coefficients from the estimated secondary path filter starting from coef[ind] to the contents of newCoef. - Returns :
-
On success returns the number of coefficients copied, otherwise the error code (negative int).
- Input Parameters :
- rtfdfxlms : pointer to an asptRtfdfxlms32f filter.
- newCoef : destination buffer.
- ind : index to the first coefficient to be initialized.
- N : number of coefficients to be initialized.
- flip : if not 0, will flip the coefficients order.
- Error Conditions
- ASPT_NULL_PTR_ERR : newCoef/rtfdfxlms->secPathEst is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
rtfdfxlms32fResize
DT32S rtfdfxlms32fResize(asptRtfdfxlms32f *rtfdfxlms, DT32S newLen, DT32S newBlock)
Resizes an asptRtfdfxlms32f filter keeping as much of the filter state as possible. - Returns :
- Input Parameters :
- rtfdfxlms : pointer to the asptRtfdfxlms32f filter to be resized.
- newLen : required new filter length
- newBlock : new block length
- Error Conditions
- ASPT_NO_ERR : Resizing is success
- ASPT_NULL_PTR_ERR : NULL pointer error
- ASPT_RANGE_ERR : newLength/newBlock is not a valid filter length
- ASPT_NO_MEM_ERR : Could not allocate the necessary filter storage
- Remarks :
-
Use this function only with dynamically allocated asptRtfdfxlms32f filters.