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_fir_decimate_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_fir_decimate_init_f32.c 00009 * 00010 * Description: Floating-point FIR Decimator 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 FIR_decimate 00038 * @{ 00039 */ 00040 00041 /** 00042 * @brief Initialization function for the floating-point FIR decimator. 00043 * @param[in,out] *S points to an instance of the floating-point FIR decimator structure. 00044 * @param[in] numTaps number of coefficients in the filter. 00045 * @param[in] M decimation factor. 00046 * @param[in] *pCoeffs points to the filter coefficients. 00047 * @param[in] *pState points to the state buffer. 00048 * @param[in] blockSize number of input samples to process per call. 00049 * @return The function returns ARM_MATH_SUCCESS if initialization was successful or ARM_MATH_LENGTH_ERROR if 00050 * <code>blockSize</code> is not a multiple of <code>M</code>. 00051 * 00052 * <b>Description:</b> 00053 * \par 00054 * <code>pCoeffs</code> points to the array of filter coefficients stored in time reversed order: 00055 * <pre> 00056 * {b[numTaps-1], b[numTaps-2], b[N-2], ..., b[1], b[0]} 00057 * </pre> 00058 * \par 00059 * <code>pState</code> points to the array of state variables. 00060 * <code>pState</code> is of length <code>numTaps+blockSize-1</code> words where <code>blockSize</code> is the number of input samples passed to <code>arm_fir_decimate_f32()</code>. 00061 * <code>M</code> is the decimation factor. 00062 */ 00063 00064 arm_status arm_fir_decimate_init_f32( 00065 arm_fir_decimate_instance_f32 * S, 00066 uint16_t numTaps, 00067 uint8_t M, 00068 float32_t * pCoeffs, 00069 float32_t * pState, 00070 uint32_t blockSize) 00071 { 00072 arm_status status; 00073 00074 /* The size of the input block must be a multiple of the decimation factor */ 00075 if((blockSize % M) != 0u) 00076 { 00077 /* Set status as ARM_MATH_LENGTH_ERROR */ 00078 status = ARM_MATH_LENGTH_ERROR; 00079 } 00080 else 00081 { 00082 /* Assign filter taps */ 00083 S->numTaps = numTaps; 00084 00085 /* Assign coefficient pointer */ 00086 S->pCoeffs = pCoeffs; 00087 00088 /* Clear state buffer and size is always (blockSize + numTaps - 1) */ 00089 memset(pState, 0, (numTaps + (blockSize - 1u)) * sizeof(float32_t)); 00090 00091 /* Assign state pointer */ 00092 S->pState = pState; 00093 00094 /* Assign Decimation Factor */ 00095 S->M = M; 00096 00097 status = ARM_MATH_SUCCESS; 00098 } 00099 00100 return (status); 00101 00102 } 00103 00104 /** 00105 * @} end of FIR_decimate group 00106 */
Generated on Tue Jul 12 2022 19:55:43 by
 1.7.2
 1.7.2 
    