CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
向量缩放

函数

void csky_scale_f32 (float32_t *pSrc, float32_t scale, float32_t *pDst, uint32_t blockSize)
 浮点向量缩放. 更多...
 
void csky_scale_q15 (q15_t *pSrc, q15_t scaleFract, int8_t shift, q15_t *pDst, uint32_t blockSize)
 Q15 向量缩放. 更多...
 
void csky_scale_q31 (q31_t *pSrc, q31_t scaleFract, int8_t shift, q31_t *pDst, uint32_t blockSize)
 Q31 向量缩放. 更多...
 
void csky_scale_q7 (q7_t *pSrc, q7_t scaleFract, int8_t shift, q7_t *pDst, uint32_t blockSize)
 Q7 向量缩放. 更多...
 

简要说明

将向量乘以标量值.对浮点数据来说,算法如下:

    pDst[n] = pSrc[n] * scale,   0 <= n < blockSize.

在定点函数 Q7, Q15 和 Q31 中, scale 表现为一个分数乘法scaleFract 和一个算术移位shift. 该偏移允许缩放操作的增益超过1.0:

    pDst[n] = (pSrc[n] * scaleFract) << shift,   0 <= n < blockSize.

应用于定点数据的总比例因子是

    scale = scaleFract * 2^shift.

这些函数可以在原值上做计算,也就是说,允许源和目的向量指针指向相同地址。

函数说明

void csky_scale_f32 ( float32_t pSrc,
float32_t  scale,
float32_t pDst,
uint32_t  blockSize 
)
参数
[in]*pSrc指向输入向量
[in]scale缩放比例
[out]*pDst指向输出向量
[in]blockSize向量中的元素数
返回
none.
示例:
csky_graphic_equalizer_example_q31.c , 以及 csky_signal_converge_example_f32.c.
void csky_scale_q15 ( q15_t pSrc,
q15_t  scaleFract,
int8_t  shift,
q15_t pDst,
uint32_t  blockSize 
)
参数
[in]*pSrc指向输入向量
[in]scaleFract小数部分的比例值
[in]shift将结果移位的位数
[out]*pDst指向输出向量
[in]blockSize向量中的元素数
返回
none.

缩放和溢出时的行为:

输入数据 *pSrcscaleFract 是1.15格式. 相乘的中间结果是2.30格式,然后做饱和移位到1.15格式.
void csky_scale_q31 ( q31_t pSrc,
q31_t  scaleFract,
int8_t  shift,
q31_t pDst,
uint32_t  blockSize 
)
参数
[in]*pSrc指向输入向量
[in]scaleFract小数部分的比例值
[in]shift将结果移位的位数
[out]*pDst指向输出向量
[in]blockSize向量中的元素数
返回
none.

缩放和溢出时的行为:

输入数据*pSrcscaleFract 是1.31格式. 相乘的中间结果是2.62格式,然后做饱和移位到1.31格式.
示例:
csky_graphic_equalizer_example_q31.c.
void csky_scale_q7 ( q7_t pSrc,
q7_t  scaleFract,
int8_t  shift,
q7_t pDst,
uint32_t  blockSize 
)
参数
[in]*pSrc指向输入向量
[in]scaleFract小数部分的比例值
[in]shift将结果移位的位数
[out]*pDst指向输出向量
[in]blockSize向量中的元素数
返回
none.

缩放和溢出时的行为:

输入数据*pSrcscaleFract是1.7格式. 相乘的中间结果是2.14 格式,然后做饱和移位到1.7格式.