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_biquad_cascade_df1_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_biquad_cascade_df1_init_f32.c 00009 * 00010 * Description: floating-point Biquad cascade DirectFormI(DF1) 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.5 2010/04/26 00027 * incorporated review comments and updated with latest CMSIS layer 00028 * 00029 * Version 0.0.3 2010/03/10 00030 * Initial version 00031 * ---------------------------------------------------------------------------*/ 00032 00033 #include "arm_math.h" 00034 00035 /** 00036 * @ingroup groupFilters 00037 */ 00038 00039 /** 00040 * @addtogroup BiquadCascadeDF1 00041 * @{ 00042 */ 00043 00044 /** 00045 * @details 00046 * @brief Initialization function for the floating-point Biquad cascade filter. 00047 * @param[in,out] *S points to an instance of the floating-point Biquad cascade structure. 00048 * @param[in] numStages number of 2nd order stages in the filter. 00049 * @param[in] *pCoeffs points to the filter coefficients array. 00050 * @param[in] *pState points to the state array. 00051 * @return none 00052 * 00053 * 00054 * <b>Coefficient and State Ordering:</b> 00055 * 00056 * \par 00057 * The coefficients are stored in the array <code>pCoeffs</code> in the following order: 00058 * <pre> 00059 * {b10, b11, b12, a11, a12, b20, b21, b22, a21, a22, ...} 00060 * </pre> 00061 * 00062 * \par 00063 * where <code>b1x</code> and <code>a1x</code> are the coefficients for the first stage, 00064 * <code>b2x</code> and <code>a2x</code> are the coefficients for the second stage, 00065 * and so on. The <code>pCoeffs</code> array contains a total of <code>5*numStages</code> values. 00066 * 00067 * \par 00068 * The <code>pState</code> is a pointer to state array. 00069 * Each Biquad stage has 4 state variables <code>x[n-1], x[n-2], y[n-1],</code> and <code>y[n-2]</code>. 00070 * The state variables are arranged in the <code>pState</code> array as: 00071 * <pre> 00072 * {x[n-1], x[n-2], y[n-1], y[n-2]} 00073 * </pre> 00074 * The 4 state variables for stage 1 are first, then the 4 state variables for stage 2, and so on. 00075 * The state array has a total length of <code>4*numStages</code> values. 00076 * The state variables are updated after each block of data is processed; the coefficients are untouched. 00077 * 00078 */ 00079 00080 void arm_biquad_cascade_df1_init_f32( 00081 arm_biquad_casd_df1_inst_f32 * S, 00082 uint8_t numStages, 00083 float32_t * pCoeffs, 00084 float32_t * pState) 00085 { 00086 /* Assign filter stages */ 00087 S->numStages = numStages; 00088 00089 /* Assign coefficient pointer */ 00090 S->pCoeffs = pCoeffs; 00091 00092 /* Clear state buffer and size is always 4 * numStages */ 00093 memset(pState, 0, (4u * (uint32_t) numStages) * sizeof(float32_t)); 00094 00095 /* Assign state pointer */ 00096 S->pState = pState; 00097 } 00098 00099 /** 00100 * @} end of BiquadCascadeDF1 group 00101 */
Generated on Tue Jul 12 2022 19:55:42 by
1.7.2
