|
特别说明:完整45期数字信号处理教程,原创高性能示波器代码全开源地址:链接
第11章 StatisticsMathFunctions的使用(一)
本期教程主要讲解统计函数中的最大值,最小值,平均值和功率的计算。
11.1 最大值Maximum
11.2 最小值Minimum
11.3 平均值Mean
11.4 功率Power
11.5 总结
11.1 最大值Maximum
这部分函数用于计算数组中的最大值,并返回数组中的最大值和最大值在数组中的位置。
11.1.1 arm_max_f32
此函数的使用比较简单,函数定义如下:
void arm_max_f32(float32_t * pSrc, uint32_t blockSize, float32_t * pResult, uint32_t * pIndex)
参数定义:
[in] *pSrc points to the input vector
[in] blockSize length of the input vector
[out] *pResult maximum value returned here
[out] *pIndex index of maximum value returned here
11.1.2 arm_max_q31
函数定义如下:
void arm_max_q31(q31_t * pSrc, uint32_t blockSize, q31_t * pResult, uint32_t * pIndex)
参数定义:
[in] *pSrc points to the input vector
[in] blockSize length of the input vector
[out] *pResult maximum value returned here
[out] *pIndex index of maximum value returned here
11.1.3 arm_max_q15
函数定义如下:
void arm_max_q15(q15_t * pSrc, uint32_t blockSize, q15_t * pResult, uint32_t * pIndex)
参数定义:
[in] *pSrc points to the input vector
[in] blockSize length of the input vector
[out] *pResult maximum value returned here
[out] *pIndex index of maximum value returned here
11.1.4 arm_max_q7
函数定义如下:
void arm_max_q7(q7_t * pSrc, uint32_t blockSize, q7_t * pResult, uint32_t * pIndex)
参数定义:
[in] *pSrc points to the input vector
[in] blockSize length of the input vector
[out] *pResult maximum value returned here
[out] *pIndex index of maximum value returned here
11.1.5 实例讲解
实验目的:
1. 学习FastMathFunctions中最大值的求解
实验内容:
1. 按下按键K1, 串口打印函数DSP_Max的输出结果
实验现象:
通过窗口上位机软件SecureCRT(V5光盘里面有此软件)查看打印信息现象如下:
程序设计:
- /*
- *********************************************************************************************************
- * 函 数 名: DSP_Max
- * 功能说明: 求最大值
- * 形 参:无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- static void DSP_Max(void)
- {
- float32_t pSrc[10] = {0.6948, 0.3171, 0.9502, 0.0344, 0.4387, 0.3816, 0.7655, 0.7952, 0.1869, 0.4898};
- (1)
- float32_t pResult;
- uint32_t pIndex;
- q31_t pSrc1[10];
- q31_t pResult1;
- q15_t pSrc2[10];
- q15_t pResult2;
- q7_t pSrc3[10];
- q7_t pResult3;
- arm_max_f32(pSrc, 10, &pResult, &pIndex);
- printf("arm_max_f32 : pResult = %f pIndex = %d\r\n", pResult, pIndex);
- /*****************************************************************/
- for(pIndex = 0; pIndex < 10; pIndex++)
- {
- pSrc1[pIndex] = rand(); (2)
- }
- arm_max_q31(pSrc1, 10, &pResult1, &pIndex);
- printf("arm_max_q31 : pResult = %d pIndex = %d\r\n", pResult1, pIndex);
- /*****************************************************************/
- for(pIndex = 0; pIndex < 10; pIndex++)
- {
- pSrc2[pIndex] = rand()%32768; (3)
- }
- arm_max_q15(pSrc2, 10, &pResult2, &pIndex);
- printf("arm_max_q15 : pResult = %d pIndex = %d\r\n", pResult2, pIndex);
- /*****************************************************************/
- for(pIndex = 0; pIndex < 10; pIndex++)
- {
- pSrc3[pIndex] = rand()%128; (4)
- }
- arm_max_q7(pSrc3, 10, &pResult3, &pIndex);
- printf("arm_max_q7 : pResult = %d pIndex = %d\r\n", pResult3, pIndex);
- printf("******************************************************************\r\n");
- }
复制代码 1. 这里10个浮点随机数是通过matlab生成的,生成方法很简单,在命令窗口输入命令:
rand(1, 10) %1行10列
获取结果如下:
如果想获取整形随机数,可以使用函数:
randi(32768, 1, 10) %生成的随机数不超过32768, 1行10列。
2. 使用stdlib.h中的rand生成伪随机数。
3. 通过对32768求余获得可以用于函数arm_max_q15的数据。
4. 通过对128求余获得可以用于函数arm_max_q7的数据。 |
|