CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数

函数

void csky_var_f32 (float32_t *pSrc, uint32_t blockSize, float32_t *pResult)
 浮点数组元素的方差 更多...
 
void csky_var_q15 (q15_t *pSrc, uint32_t blockSize, q15_t *pResult)
 Q15数组元素的方差 更多...
 
void csky_var_q31 (q31_t *pSrc, uint32_t blockSize, q31_t *pResult)
 Q15数组元素的方差 更多...
 

简要说明

计算输入数组元素的方差。 使用的算法如下:

        Result = (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]

为浮点,Q31和Q15分别提供了不同的函数。

函数说明

void csky_var_f32 ( float32_t pSrc,
uint32_t  blockSize,
float32_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的方差
返回
none.
示例:
csky_class_marks_example_f32.c.
void csky_var_q15 ( q15_t pSrc,
uint32_t  blockSize,
q15_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的方差
返回
none.

缩放和溢出行为:

函数实现使用了一个内部64位累加器。 输入数据表示为1.15格式。 中间乘法生成2.30格式的结果,结果在34.30格式的64位累加器累加。 因为有33位保护位,所以不会有溢出的风险。同时还可以保存所有的中间乘法结果的精度。 最后,34.30格式的丢弃低15位截断为34.15,然后饱和生成1.15格式的结果。
void csky_var_q31 ( q31_t pSrc,
uint32_t  blockSize,
q31_t pResult 
)
参数
[in]*pSrc指向输入数组
[in]blockSize输入数组的长度
[out]*pResult返回的方差值
返回
none.

缩放和溢出行为:

函数实现使用了一个内部64位累加器。 输入数据表示为1.31格式,然后移位8位,生成1.23格式。 中间乘法生成2.46格式的结果,结果在18.46格式的64位累加器累加。 除法之后,中间结果应该是18.46格式。 最后,18.46格式右移15位,然后饱和生成1.31格式的结果。