
本帖最后由 baiyongbin2009 于 2015-3-23 11:30 编辑 特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接 第12章 StatisticsMathFunctions的使用(二) 本期教程主要讲解统计函数中的标准偏差、均方根和方差的计算。 12.1 标准偏差 Standard deviation 12.2 均方差RMS 12.3 方差 Variance 12.4 总结 12.1 标准偏差Standard deviation 这部分函数用于计算标准偏差,公式描述如下: Result = sqrt((sumOfSquares - sum2 / blockSize) / (blockSize - 1)) 其中: sumOfSquares = pSrc[0] * pSrc[0] + pSrc[1] * pSrc[1] + ... + pSrc[blockSize-1] * pSrc[blockSize-1] sum = pSrc[0] + pSrc[1] + pSrc[2] + ... + pSrc[blockSize-1] 12.1.1 arm_std_f32此函数的使用比较简单,函数定义如下: void arm_std_f32(float32_t * pSrc, uint32_t blockSize, float32_t * pResult) 参数定义: [in] *pSrc points to the input vector [in] blockSize length of the input vector [out] *pResult standard deviation value returned here 12.1.2 arm_std_q31 此函数的使用比较简单,函数定义如下: void arm_std_q31(q31_t * pSrc, uint32_t blockSize, q31_t * pResult) 参数定义: [in] *pSrc points to the input vector [in] blockSize length of the input vector [out] *pResult standard deviation value returned here 注意事项: 输入参数是1.31格式的,相乘后输出就是1.31*1.31 = 2.62格式,这种情况下,函数内部使用的64位累加器很容易溢出,并且这个函数不支持饱和运算,这个函数的使用还有一些问题,有待后面解决。 12.1.3 arm_std_q15 此函数的使用比较简单,函数定义如下: void arm_std_q15(q15_t * pSrc, uint32_t blockSize, q15_t * pResult) 参数定义: [in] *pSrc points to the input vector [in] blockSize length of the input vector [out] *pResult standard deviation value returned here 注意事项: 输入参数是1.15格式,相乘后的的结果就是1.15*1.15 = 2.30格式,这种情况下,内部64位累加器的的格式就是34.30。最终的输出结果要截取到低15位数据,然后通过饱和运算最终输出数据格式1.15。 12.1.4 实例讲解实验目的: 1. 学习StatisticsMathFunctions中标准偏差的求解 实验内容: 1. 按下按键K1, 串口打印函数DSP_Std的输出结果 实验现象: 通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下: ![]() 程序设计:
1. 这个是浮点数标准偏差求解,这里我们先用matlab生成一组随机的浮点数,并求解其对应的标准偏差,然后再用此函数获取标准偏差作为对比。 在matlab的命令窗口输入如下命令: rand(1,10) %1行10列 然后再通过命令std获得标准偏差: std(ans) ![]() matlab求得标准偏差数值是0.2935,而DSP函数求得结果是0.293485,基本是一致的。 2. 这个函数的使用还没有搞懂,有待后面解决。 3. 这个函数的使用还没有搞懂,有待后面解决。 |
12.2.2 arm_rms_q31
12.2.3 arm_rms_q15
12.2.4 实例讲解
12.3.2 arm_var_q31
12.3.3 arm_var_q15
12.3.4 实例讲解