CSI-DSP  Version 1.0.0
CSI DSP Software Library
函数
部分卷积

函数

csky_status csky_conv_partial_f32 (float32_t *pSrcA, uint32_t srcALen, float32_t *pSrcB, uint32_t srcBLen, float32_t *pDst, uint32_t firstIndex, uint32_t numPoints)
 浮点序列的部分卷积 更多...
 
csky_status csky_conv_partial_fast_opt_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2)
 Q15序列的部分卷积 (快速版本) 更多...
 
csky_status csky_conv_partial_fast_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
 Q15序列的部分卷积 (快速版本) 更多...
 
csky_status csky_conv_partial_fast_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
 Q31序列的部分卷积 (快速版本) 更多...
 
csky_status csky_conv_partial_opt_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2)
 Q15序列的部分卷积 更多...
 
csky_status csky_conv_partial_opt_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints, q15_t *pScratch1, q15_t *pScratch2)
 Q7序列的部分卷积 更多...
 
csky_status csky_conv_partial_q15 (q15_t *pSrcA, uint32_t srcALen, q15_t *pSrcB, uint32_t srcBLen, q15_t *pDst, uint32_t firstIndex, uint32_t numPoints)
 Q15序列的部分卷积 更多...
 
csky_status csky_conv_partial_q31 (q31_t *pSrcA, uint32_t srcALen, q31_t *pSrcB, uint32_t srcBLen, q31_t *pDst, uint32_t firstIndex, uint32_t numPoints)
 Q31序列的部分卷积 更多...
 
csky_status csky_conv_partial_q7 (q7_t *pSrcA, uint32_t srcALen, q7_t *pSrcB, uint32_t srcBLen, q7_t *pDst, uint32_t firstIndex, uint32_t numPoints)
 Q7序列的部分卷积 更多...
 

简要说明

部分卷积等价于卷积,只是生成的输出样本是卷积的子集。 每个函数有两个额外添加的参数。 firstIndex 指定输出样本子集的开始序号。 numPoints 是需要计算的输出样本的数量 函数计算的输出范围在: [firstIndex, ..., firstIndex+numPoints-1]. 输出数组 pDst 包括 numPoints 个值.

可选的输出范围在 [0 srcALen+srcBLen-2]. 如果请求的自己并不在这个范围,则函数返回 CSKY_MATH_ARGUMENT_ERROR. 否则函数返回 CSKY_MATH_SUCCESS.

注解
定点的行为参考 csky_conv_f32() .

快速版本

Q31和Q15的部分卷积有快速版本。快速版本需要的周期更多,但是,设计为需要输入信号缩放到不会引起中间计算发生溢出。

Opt版本

Q15和Q7有Opt版本. 设计使用内部buffer来达到更好的优化效果。 这些版本优化了速度,但是相对的消耗更多的内存。

函数说明

csky_status csky_conv_partial_f32 ( float32_t pSrcA,
uint32_t  srcALen,
float32_t pSrcB,
uint32_t  srcBLen,
float32_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR 。
csky_status csky_conv_partial_fast_opt_q15 ( q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints,
q15_t pScratch1,
q15_t pScratch2 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
[in]*pScratch1指向缓存地址,大小为 max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
[in]*pScratch2指向缓存地址,大小为 min(srcALen, srcBLen).
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR

csky_conv_partial_q15() 是这个函数的一个慢速版本,使用了64位累加器防止溢出。

限制
如果芯片不支持分对齐访问,则定义宏 UNALIGNED_SUPPORT_DISABLE 同时,输入,输出,临时buffer,都应该是32位对齐。
csky_status csky_conv_partial_fast_q15 ( q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR

函数 csky_conv_partial_q15() 是这个函数的一个慢速版本,使用了64位累加器防止溢出

csky_status csky_conv_partial_fast_q31 ( q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
函数 csky_conv_partial_q31() 是这个函数的一个慢速版本,使用了64位累加器防止溢出
csky_status csky_conv_partial_opt_q15 ( q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints,
q15_t pScratch1,
q15_t pScratch2 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
[in]*pScratch1指向临时缓存,大小为 max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
[in]*pScratch2指向临时缓存,大小为 min(srcALen, srcBLen).
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
限制
如果芯片不支持分对齐访问,则定义宏 UNALIGNED_SUPPORT_DISABLE 同时,输入,输出,临时buffer,都应该是32位对齐。

函数 csky_conv_partial_fast_q15() 是这个函数的一个快速版本,但是丢失更多的精度。

csky_status csky_conv_partial_opt_q7 ( q7_t pSrcA,
uint32_t  srcALen,
q7_t pSrcB,
uint32_t  srcBLen,
q7_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints,
q15_t pScratch1,
q15_t pScratch2 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
[in]*pScratch1指向临时缓存,大小为 max(srcALen, srcBLen) + 2*min(srcALen, srcBLen) - 2.
[in]*pScratch2指向临时缓存,大小为 min(srcALen, srcBLen).
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
限制
如果芯片不支持分对齐访问,则定义宏 UNALIGNED_SUPPORT_DISABLE 同时,输入,输出,临时buffer,都应该是32位对齐。
csky_status csky_conv_partial_q15 ( q15_t pSrcA,
uint32_t  srcALen,
q15_t pSrcB,
uint32_t  srcBLen,
q15_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR

函数 csky_conv_partial_fast_q15() 是这个函数的一个快速版本,但是丢失更多的精度

函数 csky_conv_partial_opt_q15() 是这个函数的一个快速版本,但是使用了临时缓存空间。
csky_status csky_conv_partial_q31 ( q31_t pSrcA,
uint32_t  srcALen,
q31_t pSrcB,
uint32_t  srcBLen,
q31_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR。

函数 csky_conv_partial_fast_q31() 是这个版本的一个快速版本,但是丢失了更多的精度

csky_status csky_conv_partial_q7 ( q7_t pSrcA,
uint32_t  srcALen,
q7_t pSrcB,
uint32_t  srcBLen,
q7_t pDst,
uint32_t  firstIndex,
uint32_t  numPoints 
)
参数
[in]*pSrcA指向第一个输入序列
[in]srcALen第一个输入序列的长度
[in]*pSrcB指向第二个输入序列
[in]srcBLen第二个输入序列的长度
[out]*pDst指向输出结果的地址
[in]firstIndex输出样本的起始索引
[in]numPoints输出样本的数量
返回
函数正确完成返回 CSKY_MATH_SUCCESS ,如果请求的子集超出范围 [0 srcALen+srcBLen-2],则返回 CSKY_MATH_ARGUMENT_ERROR
函数 csky_conv_partial_opt_q7() 是这个函数的一个快速版本,但是使用了临时缓存空间