CSI-DSP
Version 1.0.0
CSI DSP Software Library
|
函数 | |
void | csky_cmplx_dot_prod_f32 (float32_t *pSrcA, float32_t *pSrcB, uint32_t numSamples, float32_t *realResult, float32_t *imagResult) |
浮点复数点积 更多... | |
void | csky_cmplx_dot_prod_q15 (q15_t *pSrcA, q15_t *pSrcB, uint32_t numSamples, q31_t *realResult, q31_t *imagResult) |
Q15复数点积 更多... | |
void | csky_cmplx_dot_prod_q31 (q31_t *pSrcA, q31_t *pSrcB, uint32_t numSamples, q63_t *realResult, q63_t *imagResult) |
Q31 复数点积 更多... | |
计算两个复数向量的点积. 向量的元素逐个相乘,然后累加.
pSrcA
指向第一个复数输入向量, pSrcB
指向第二个复数输入向量. numSamples
指定复数元素的个数, 复数数据是交错方式保存的 (real, imag, real, imag, ...). 每个向量一共有2*numSamples
个值.
使用的算法如下:
realResult=0; imagResult=0; for(n=0; n<numSamples; n++) { realResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+0] - pSrcA[(2*n)+1]*pSrcB[(2*n)+1]; imagResult += pSrcA[(2*n)+0]*pSrcB[(2*n)+1] + pSrcA[(2*n)+1]*pSrcB[(2*n)+0]; }
为浮点,Q15和Q31三种类型都提供了不同的函数.
void csky_cmplx_dot_prod_f32 | ( | float32_t * | pSrcA, |
float32_t * | pSrcB, | ||
uint32_t | numSamples, | ||
float32_t * | realResult, | ||
float32_t * | imagResult | ||
) |
*pSrcA | 指向第一个输入向量 |
*pSrcB | 指向第二个输入向量 |
numSamples | 向量中的复数元素数量 |
*realResult | 实部的结果从这里返回 |
*imagResult | 虚部的结果从这里返回 |
void csky_cmplx_dot_prod_q15 | ( | q15_t * | pSrcA, |
q15_t * | pSrcB, | ||
uint32_t | numSamples, | ||
q31_t * | realResult, | ||
q31_t * | imagResult | ||
) |
*pSrcA | 指向第一个输入向量 |
*pSrcB | 指向第二个输入向量 |
numSamples | 向量中的复数元素数量 |
*realResult | 实部的结果从这里返回 |
*imagResult | 虚部的结果从这里返回 |
缩放和溢出时的行为:
realResult
和 imagResult
是8.24格式. void csky_cmplx_dot_prod_q31 | ( | q31_t * | pSrcA, |
q31_t * | pSrcB, | ||
uint32_t | numSamples, | ||
q63_t * | realResult, | ||
q63_t * | imagResult | ||
) |
*pSrcA | 指向第一个输入向量 |
*pSrcB | 指向第二个输入向量 |
numSamples | 向量中的复数元素数量 |
*realResult | 实部的结果从这里返回 |
*imagResult | 虚部的结果从这里返回 |
缩放和溢出时的行为:
numSamples
少于 32768, 加法就不会溢出,也就不需要饱和操作. 返回结果realResult
和 imagResult
是16.48格式. 不需要输入向下缩放.