快速卷积与相关
直接计算 利用卷积的定义 \(y[n]=f(n)*g(n)=\sum_{m=0}^{M-1}f[n-m]g[m]\) 若\(f[n],g[n]\)都是实数信号,则需要\(MN\)个乘法 算法: /** * @brief 直接卷积计算 * * @param x 输入序列 * @param hn 传递函数 * @param m x的长度 * @param n hn的长度 *...
直接计算 利用卷积的定义 \(y[n]=f(n)*g(n)=\sum_{m=0}^{M-1}f[n-m]g[m]\) 若\(f[n],g[n]\)都是实数信号,则需要\(MN\)个乘法 算法: /** * @brief 直接卷积计算 * * @param x 输入序列 * @param hn 传递函数 * @param m x的长度 * @param n hn的长度 *...
快速傅里叶变换 1、快速傅里叶变换 功能 计算复数序列的快速傅里叶变换 方法简介 序列\(x(n)\)的离散傅里叶变换为: [X(k)=\sum_{n=0}^{N-1}x(n)W_{N}^{nk},k=0,1,…N-1] 将序列\(x(n)\)按序号n的奇偶分为两组,即: [\begin{cases} x_1(n)=x(2n), & \text{if }n\tex...
FreeRTOS使用pvPortMalloc()函数来替代malloc()申请内存,使用vPortFree()函数来替代 free()释放内存 不同的嵌入式系统对于内存分配和时间要求不同,内存分配算法可作为系统的可选选项,FreeRTOS使用者就可以使用适合的内存分配方法。FreeRTOS提供了5中内存分配方法,这5种方法分别对应heap_1.c、heap_2.c、heap_3.c、hea...
二阶滤波器是二阶(两个极点和两个零点)的IIR滤波器。考虑到更高阶数的滤波器对系数敏感,二阶可以单独使用,或者在更复杂的滤波器中作为基本的构建单元。 二阶滤波器的传递函数为: [H(z)=\frac{b_0+b_1z^{-1}+b_2z^{-2}}{a_0+a_1z^{-1}+a_2z^{-2}}] 其中参数\(a_0=1\); 直接I型 二阶滤波器有几种不同的结构,最直观也最直接...
这是巴特沃斯滤波器的双二阶(Second-Order Section)生成方式,在多阶滤波器参数无法用单精度来表示的时候,需要使用SOS的方式来生成,这样才能使得每一级的滤波器使用单精度正常运行。 在多阶滤波器中,分子b的数据会很小,这里是该数据单精度浮点数不能表示了,并不能通过放大来处理 关于滤波器是否转单精度会影响响应可以在matlab中将参数使用single(b)来转换为单...
通过C语言直接生成巴特沃斯滤波器和切比雪夫II型滤波器 这里生成的低通和高通滤波器是二阶级联的也就是SOS(second-order sections)格式的,带通和带阻滤波器是四阶级联的。 如果需要将二阶或者四阶的滤波器串起来可以使用卷积来完成,如下: void convolution(const double *signal, int signalLength, const...
针对没有浮点计算单元的单片机,在计算滤波器的时候会比较慢,如果能够将浮点数转换为定点数来计算的化,就会快很多。 以一个4阶的低通滤波器为例,分解为二阶滤波器之后,参数为: static float float_b1[] = {0.115258015230152, 0.230516030460303, 0.115258015230152}; static float float_a1[] ...
在日常使用中,最常见的就是直接使用串口的寄存器输出,以HAL库为例,使用的函数为: HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout) 如果需要方便一点就可以重写printf函数的输出函数fputc,如下: #in...
参考DAFX_Digtial_Audio_Effects这本书,一个二阶滤波器的设计为: 公式 b0 b1 b2 a1 a2 Lowpass $\frac{K^2Q}{K^2Q+K+Q}$ $\frac{2K^2Q}{K^2Q+...
在单片机的应用中,对于很多的单片机在计算双精度浮点数会比单精度浮点数慢很多,一些单片机也有单精度的浮点数计算单元,对于这些个单片机在计算双精度数据的时候就会比较慢,如果能不使用双精度的浮点数就能计算完成的话,就会很好。 对于一些滤波器来说,特别是高阶的IIR滤波器,通过多级的级联,会导致滤波器的参数比较敏感,对于一点的变动就可能导致滤波器不稳定,从而数据无法收敛,对于高阶滤波器尤为...