Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of dsp by
arm_lms_norm_init_f32.c
00001 /*----------------------------------------------------------------------------- 00002 * Copyright (C) 2010 ARM Limited. All rights reserved. 00003 * 00004 * $Date: 29. November 2010 00005 * $Revision: V1.0.3 00006 * 00007 * Project: CMSIS DSP Library 00008 * Title: arm_lms_norm_init_f32.c 00009 * 00010 * Description: Floating-point NLMS filter initialization function. 00011 * 00012 * Target Processor: Cortex-M4/Cortex-M3 00013 * 00014 * Version 1.0.3 2010/11/29 00015 * Re-organized the CMSIS folders and updated documentation. 00016 * 00017 * Version 1.0.2 2010/11/11 00018 * Documentation updated. 00019 * 00020 * Version 1.0.1 2010/10/05 00021 * Production release and review comments incorporated. 00022 * 00023 * Version 1.0.0 2010/09/20 00024 * Production release and review comments incorporated 00025 * 00026 * Version 0.0.7 2010/06/10 00027 * Misra-C changes done 00028 * ---------------------------------------------------------------------------*/ 00029 00030 #include "arm_math.h" 00031 00032 /** 00033 * @ingroup groupFilters 00034 */ 00035 00036 /** 00037 * @addtogroup LMS_NORM 00038 * @{ 00039 */ 00040 00041 /** 00042 * @brief Initialization function for floating-point normalized LMS filter. 00043 * @param[in] *S points to an instance of the floating-point LMS filter structure. 00044 * @param[in] numTaps number of filter coefficients. 00045 * @param[in] *pCoeffs points to coefficient buffer. 00046 * @param[in] *pState points to state buffer. 00047 * @param[in] mu step size that controls filter coefficient updates. 00048 * @param[in] blockSize number of samples to process. 00049 * @return none. 00050 * 00051 * \par Description: 00052 * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order: 00053 * <pre> 00054 * {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]} 00055 * </pre> 00056 * The initial filter coefficients serve as a starting point for the adaptive filter. 00057 * <code>pState</code> points to an array of length <code>numTaps+blockSize-1</code> samples, 00058 * where <code>blockSize</code> is the number of input samples processed by each call to <code>arm_lms_norm_f32()</code>. 00059 */ 00060 00061 void arm_lms_norm_init_f32( 00062 arm_lms_norm_instance_f32 * S, 00063 uint16_t numTaps, 00064 float32_t * pCoeffs, 00065 float32_t * pState, 00066 float32_t mu, 00067 uint32_t blockSize) 00068 { 00069 /* Assign filter taps */ 00070 S->numTaps = numTaps; 00071 00072 /* Assign coefficient pointer */ 00073 S->pCoeffs = pCoeffs; 00074 00075 /* Clear state buffer and size is always blockSize + numTaps - 1 */ 00076 memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t)); 00077 00078 /* Assign state pointer */ 00079 S->pState = pState; 00080 00081 /* Assign Step size value */ 00082 S->mu = mu; 00083 00084 /* Initialise Energy to zero */ 00085 S->energy = 0.0f; 00086 00087 /* Initialise x0 to zero */ 00088 S->x0 = 0.0f; 00089 00090 } 00091 00092 /** 00093 * @} end of LMS_NORM group 00094 */
Generated on Tue Jul 12 2022 19:55:43 by
1.7.2
