Back to C-ASPT Contents Page
asptFdfxlms32f
API Summary
API to create and delete asptFdfxlms32f filters
- DT32S fdfxlms32fInit(asptFdfxlms32f *fdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPath,DT32S sL,DT32F *sPathEst,DT32S seL,DT32S *ip,DT32F *w)
- DT32S fdfxlms32fInitStatic(asptFdfxlms32f *fdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPath,DT32S sL,DT32F *sPathEst,DT32S seL,DT32F *pCof,DT32F *pDat,DT32S *ip,DT32F *w)
- void fdfxlms32fFree(asptFdfxlms32f *fdfxlms)
API to filter and update asptFdfxlms32f filters
API to retrieve the properties of asptFdfxlms32f filters
- DT32S fdfxlms32fGetCoef(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
- DT32S fdfxlms32fGetSecPath(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
- DT32S fdfxlms32fGetEstSecPath(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
- fdfxlms32fGetCoefPtr( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetSecPathPtr( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetEstSecPathPtr( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetFilterLength( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetBlockLength( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetSecPathLength( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetEstSecPathLength( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetFftLength( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetStepSize( asptFdfxlms32f
*fdfxlms )
- fdfxlms32fGetConstrain( asptFdfxlms32f
*fdfxlms )
API to set the properties of asptFdfxlms32f filters
- DT32S fdfxlms32fReset(asptFdfxlms32f *fdfxlms)
- DT32S fdfxlms32fResetDelayLine(asptFdfxlms32f *fdfxlms)
- DT32S fdfxlms32fResize(asptFdfxlms32f *fdfxlms, DT32S newLen, DT32S newBlock)
- DT32S fdfxlms32fSetCoef(asptFdfxlms32f *fdfxlms, DT32F *newCoef, DT32S ind, DT32S N, DT32S flip)
- DT32S fdfxlms32fSetSecPath(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
- DT32S fdfxlms32fSetEstSecPath(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
- fdfxlms32fSetStepSize( asptFdfxlms32f
*fdfxlms, newSs )
- fdfxlms32fSetConstrain( asptFdfxlms32f
*fdfxlms, newC )
- fdfxlms32fSetSecPathLength( asptFdfxlms32f
*fdfxlms, newL )
- fdfxlms32fSetEstSecPathLength( asptFdfxlms32f
*fdfxlms, newL )
Description
Implements the Frequency Domain Filtered-x algorithm. This version is intended for simulation purposes only. Use asptRtfdfxlms filters for real-time applications.
Copyright
Copyright (c) DSP ALGORITHMS 2003; all rights reserved.
<< Back to top
fdfxlms32fInit
DT32S fdfxlms32fInit(asptFdfxlms32f *fdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPath,DT32S sL,DT32F *sPathEst,DT32S seL,DT32S *ip,DT32F *w)
Initializes an asptFdfxlms32f filter and allocates its necessary storage buffers - Returns :
-
Error code. On failure, the filterLength member of the filter is set to zero.
- Input Parameters :
- fdfxlms : pointer to the asptFdfxlms32f to be initialized
- M : number of time domain filter coefficients
- L : block length (number of new samples each block)
- mu : step size.
- cs : constrained (1) or unconstrained (0) filter.
- 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
- ip : fft bit reversal table
- w : fft twiddle factor table.
- Output Parameters :
- fdfxlms is initialized using the given input arguments.
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : ip/w is a NULL pointer
- ASPT_RANGE_ERR : L/M/sL/seL is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
<< Back to top
fdfxlms32fInitStatic
DT32S fdfxlms32fInitStatic(asptFdfxlms32f *fdfxlms,DT32S M,DT32S L,DT32F mu,DT32S cs,DT32F *sPath,DT32S sL,DT32F *sPathEst,DT32S seL,DT32F *pCof,DT32F *pDat,DT32S *ip,DT32F *w)
Initializes an asptFdfxlms32f filter to use pre-allocated memory blocks - Returns :
-
Error code. On failure, the filterLength member of the structure is set to zero.
- Input Parameters :
- fdfxlms : pointer to the asptFdfxlms32f to be initialized
- M : number of time domain filter coefficients
- L : block length (number of new samples each block)
- mu : step size.
- cs : constrained (1) or unconstrained (0) filter.
- 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 in program memory
of at least [3*fftLength] DT32F locations to be used for the filter coefficients and sec. source coefficients.
- pDat : pointer to a pre-allocated memory in data memory of at least
[2*C1 + 2*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 :
- fdfxlms is initialized using the given input arguments.
- Error Conditions
- ASPT_NO_ERR : Initialization is successful
- ASPT_NULL_PTR_ERR : ip/w/pCof/pDat is a NULL pointer
- ASPT_RANGE_ERR : L/M/sL/seL is not a valid input value
- ASPT_NO_MEM_ERR : could not allocate memory
- Remarks :
-
fftLength = 2^(nextpow2(L+M-1)). C1 = fftLength - blockLength.
<< Back to top
fdfxlms32fFilterUpdate
DT32S fdfxlms32fFilterUpdate(asptFdfxlms32f *fdfxlms, DT32F *ref, DT32F *prim, DT32F *sens)
Calculates the filter output and updates the coefficients vector according to the FDAFXLMS algorithm. - Returns :
- Input Parameters :
- fdfxlms : pointer to the asptFdfxlms32f filter
- ref : new reference block of samples.
- prim : primary source block of samples measured at sensor
- Output Parameters :
- sen : array to store the calculated block of sensor samples
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
fdfxlms32fFilterOnly
DT32S fdfxlms32fFilterOnly(asptFdfxlms32f *fdfxlms, DT32F *ref, DT32F *prim, DT32F *sens)
Calculates the filter output but does not update the coefficients vector. It also updates the internal buffers and power estimate. - Returns :
- Input Parameters :
- fdfxlms : pointer to the asptFdfxlms32f filter
- ref : new reference block of samples.
- prim : primary source block of samples measured at sensor
- Output Parameters :
- sen : array to store the calculated block of sensor samples
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
fdfxlms32fFree
void fdfxlms32fFree(asptFdfxlms32f *fdfxlms)
Frees the allocated memory for this asptFdfxlms32f filter. - Returns :
- Input Parameters :
- fdfxlms : pointer to the asptFdfxlms32f filter
- Remarks :
-
Use this function only with filters created with fdfxlms32fInit(). Do not use with asptFdfxlms32f filters created using fdfxlms32fInitStatic().
<< Back to top
fdfxlms32fReset
DT32S fdfxlms32fReset(asptFdfxlms32f *fdfxlms)
Resets all filter coefficients to zero.- Returns :
- Input Parameters :
- fdfxlms : pointer to an asptFdfxlms32f filter to be reset.
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
fdfxlms32fResetDelayLine
DT32S fdfxlms32fResetDelayLine(asptFdfxlms32f *fdfxlms)
Resets the internal delay line to zeros.- Returns :
- Input Parameters :
- fdfxlms : pointer to an asptFdfxlms32f filter to be reset.
- Error Conditions
- ASPT_NO_ERR : success
- ASPT_NULL_PTR_ERR : NULL pointer error
<< Back to top
fdfxlms32fGetCoef
DT32S fdfxlms32fGetCoef(asptFdfxlms32f *fdfxlms, 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 :
- fdfxlms : pointer to an asptFdfxlms32f 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/fdfxlms->wFreq is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
fdfxlms32fSetCoef
DT32S fdfxlms32fSetCoef(asptFdfxlms32f *fdfxlms, 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 :
- fdfxlms : pointer to an asptFdfxlms32f 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/fdfxlms->wFreq is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
fdfxlms32fGetEstSecPath
DT32S fdfxlms32fGetEstSecPath(asptFdfxlms32f *fdfxlms, 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 :
- fdfxlms : pointer to an asptFdfxlms32f 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/fdfxlms->secPathEst is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
fdfxlms32fSetEstSecPath
DT32S fdfxlms32fSetEstSecPath(asptFdfxlms32f *fdfxlms, 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 :
- fdfxlms : pointer to an asptFdfxlms32f 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/fdfxlms->secPathEst is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
fdfxlms32fGetSecPath
DT32S fdfxlms32fGetSecPath(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
Copies N internal (time domain) coefficients from the 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 :
- fdfxlms : pointer to an asptFdfxlms32f 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/fdfxlms->secPath is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
fdfxlms32fSetSecPath
DT32S fdfxlms32fSetSecPath(asptFdfxlms32f *fdfxlms, DT32F *dstBuf, DT32S ind, DT32S N, DT32S flip)
Initializes N internal (time domain) coefficients from the 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 :
- fdfxlms : pointer to an asptFdfxlms32f 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/fdfxlms->secPath is a NULL pointer
- ASPT_RANGE_ERR : ind/N is not a valid input value
<< Back to top
fdfxlms32fResize
DT32S fdfxlms32fResize(asptFdfxlms32f *fdfxlms, DT32S newLen, DT32S newBlock)
Resizes an asptFdfxlms32f filter keeping as much of the filter state as possible. - Returns :
- Input Parameters :
- fdfxlms : pointer to the asptFdfxlms32f 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 input value
- ASPT_NO_MEM_ERR : Could not allocate the necessary filter storage
- Remarks :
-
Use this function only with dynamically allocated asptFdfxlms32f filters.