CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
复数与复数相乘

函数

void csky_cmplx_mult_cmplx_f32 (float32_t *pSrcA, float32_t *pSrcB, float32_t *pDst, uint32_t numSamples)
 浮点复数乘法 更多...
 
void csky_cmplx_mult_cmplx_q15 (q15_t *pSrcA, q15_t *pSrcB, q15_t *pDst, uint32_t numSamples)
 Q15 复数相乘 更多...
 
void csky_cmplx_mult_cmplx_q31 (q31_t *pSrcA, q31_t *pSrcB, q31_t *pDst, uint32_t numSamples)
 Q31 复数乘法 更多...
 

简要说明

将一个复向量与另一个复向量相乘,并生成复数结果. 复数向量中数据是交错方式保存的 (real, imag, real, imag, ...). 参数 numSamples 表示复数元素的数量. 复数向量总共有 2*numSamples 个值

使用的算法如下:

for(n=0; n<numSamples; n++) {
    pDst[(2*n)+0] = pSrcA[(2*n)+0] * pSrcB[(2*n)+0] - pSrcA[(2*n)+1] * pSrcB[(2*n)+1];
    pDst[(2*n)+1] = pSrcA[(2*n)+0] * pSrcB[(2*n)+1] + pSrcA[(2*n)+1] * pSrcB[(2*n)+0];
}

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

函数说明

void csky_cmplx_mult_cmplx_f32 ( float32_t pSrcA,
float32_t pSrcB,
float32_t pDst,
uint32_t  numSamples 
)
参数
[in]*pSrcA指向第一个输入向量
[in]*pSrcB指向第二个输入向量
[out]*pDst指向输出向量
[in]numSamples向量中的复数元素个数
返回
none.
示例:
csky_convolution_example_f32.c.
void csky_cmplx_mult_cmplx_q15 ( q15_t pSrcA,
q15_t pSrcB,
q15_t pDst,
uint32_t  numSamples 
)
参数
[in]*pSrcA指向第一个输入向量
[in]*pSrcB指向第二个输入向量
[out]*pDst指向输出向量
[in]numSamples向量中的复数元素数量
返回
none.

缩放和溢出时的行为:

函数实现了 1.15 和 1.15 乘法,最后的结果转换为3.13格式输出.
void csky_cmplx_mult_cmplx_q31 ( q31_t pSrcA,
q31_t pSrcB,
q31_t pDst,
uint32_t  numSamples 
)
参数
[in]*pSrcA指向第一个输入的向量
[in]*pSrcB指向第二个输入的向量
[out]*pDst指向输出向量
[in]numSamples向量中的元素数量
返回
none.

缩放和溢出时的行为:

函数实现了 1.31 和 1.31 乘法,最后结果转换为3.29 格式输出. 输入不需要向下缩放.