CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
向量点积

函数

void csky_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t blockSize, float32_t *result)
 浮点向量的点积. 更多...
 
void csky_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t blockSize, q63_t *result)
 Q15向量的点积 更多...
 
void csky_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t blockSize, q63_t *result)
 Q31向量的点积 更多...
 
void csky_dot_prod_q7 (q7_t *pSrcA, q7_t *pSrcB, uint32_t blockSize, q31_t *result)
 Q7向量点积. 更多...
 

简要说明

计算两个向量的点积. 向量的每个元素相乘,然后累加.

    sum = pSrcA[0]*pSrcB[0] + pSrcA[1]*pSrcB[1] + ... + pSrcA[blockSize-1]*pSrcB[blockSize-1]

为浮点,Q7,Q15,Q31每种类型都提供了不同的函数.

函数说明

void csky_dot_prod_f32 ( float32_t pSrcA,
float32_t pSrcB,
uint32_t  blockSize,
float32_t result 
)
参数
[in]*pSrcA指向第一个输入向量
[in]*pSrcB指向第二个输入向量
[in]blockSize向量中的元素数量
[out]*result输出的返回结果
返回
none.
示例:
csky_variance_example_f32.c.
void csky_dot_prod_q15 ( q15_t pSrcA,
q15_t pSrcB,
uint32_t  blockSize,
q63_t result 
)
参数
[in]*pSrcA指向第一个输入向量
[in]*pSrcB指向第二个输入向量
[in]blockSize向量中元素的数量
[out]*result输出的返回结果
返回
none.

缩放和溢出时的行为:

中间步骤的乘法用的是 1.15 x 1.15 = 2.30 格式,然后乘法结果累加成一个64位34.30格式定点数。 累加结果有33个保护位,相加的时候不需要使用饱和算法,因为不会出现溢出. 返回结果是34.30格式.
void csky_dot_prod_q31 ( q31_t pSrcA,
q31_t pSrcB,
uint32_t  blockSize,
q63_t result 
)
参数
[in]*pSrcA指向第一个输入向量
[in]*pSrcB指向第二个输入向量
[in]blockSize向量中元素的数量
[out]*result输出的返回结果
返回
none.

缩放和溢出时的行为:

中间步骤的乘法用的是 1.31 x 1.31 = 2.62 格式,并且通过丢弃低14位截断成2.48. 2.48的乘法结果累加成一个64位16.48格式定点数。 累加结果有15个保护位,相加的时候不需要使用饱和算法,因为不会出现溢出. 返回结果是16.48格式.
void csky_dot_prod_q7 ( q7_t pSrcA,
q7_t pSrcB,
uint32_t  blockSize,
q31_t result 
)
参数
[in]*pSrcA指向第一个输入向量
[in]*pSrcB指向第二个输入向量
[in]blockSize向量中的元素数量
[out]*result输出的返回结果
返回
none.

缩放和溢出时的行为:

中间步骤的乘法用的是 1.7 x 1.7 = 2.14 格式,然后乘法结果累加成一个18.14格式定点数。 累加结果有17个保护位,相加的时候不需要使用饱和算法,因为不会出现溢出. 返回结果是18.14格式.