---
title: ConvBiased
description: "计算src1向量（长度为src1Len）和src2向量（长度为src2Len）的线性卷积，以bias作为左偏移量指定src2开始的元素，计算得到的序列dst也以bias作为左偏量进行移动，空位补0。计算公式如下："
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0131.html
sourcePath: /source/zh/kunpengboostkithistory/2200/accel/kunpengaccel_hmpp_06_0131.html
indexId: aeb653264d9391a369208accfb0a6de1a13878a377c1fc7c45e2dfe4542d0e4475
---
# ConvBiased

计算src1向量（长度为src1Len）和src2向量（长度为src2Len）的线性卷积，以bias作为左偏移量指定src2开始的元素，计算得到的序列dst也以bias作为左偏量进行移动，空位补0。计算公式如下：

，

设src2原数组为x，x的长度为xLen。

，

函数接口声明如下：

主函数：

HmppResult HMPPS_ConvBiased_32f (const float* src1, int32_t src1Len, const float* src2, int32_t src2Len, float* dst, int32_t dstLen, int32_t bias);

#### 参数

| 参数名 | 描述 | 取值范围 | 输入/输出 |
| --- | --- | --- | --- |
| src1 | 指向第一个源向量的指针。 | 非空 | 输入 |
| src1Len | 第一个源向量长度。 | (0, INT\_MAX] | 输入 |
| scr2 | 指向第二个源向量的指针。 | 非空 | 输入 |
| src2Len | 第二个源向量长度。 | (0, INT\_MAX] | 输入 |
| dst | 指向目的向量的指针。 | 非空 | 输出 |
| dstLen | 目标向量长度。 | (0, INT\_MAX] | 输入 |
| bias | 指定卷积起始元素的参数。 | [INT\_MIN, INT\_MAX] | 输入 |


#### 返回值

- 成功：返回HMPP_STS_NO_ERR。
- 失败：返回错误码。


#### 错误码

| 错误码 | 描述 |
| --- | --- |
| HMPP\_STS\_NO\_ERR | 表示没有错误。 |
| HMPP\_STS\_NULL\_PTR\_ERR | 当任何指定的指针为空时指示错误。 |
| HMPP\_STS\_SIZE\_ERR | 当srcLen或dstLen小于或等于0时指示错误。 |


#### 注意

src1、src2不能和dst是同一数组，否则可能导致结果错误。


#### 示例

```
void Hilbert_Example()
{
const int src1Len = 5;
const int src2Len = 4;
const int dstLen = 10;
const int bias = 1;
float src1[src1Len] = {2.1, -1.5, 3.5, 4.2, 1.7};
float src2[src2Len] = {0.6, 1.3, -1.7, 2.1};
float dst[dstLen];
HMPPS_ConvBiased_32f(src1, src1Len, src2, src2Len, dst, dstLen, bias);
for (int i = 0; i < dstLen; ++i) {
printf("%.2f ", dst[i]);
}
}
```

运行结果：

```
1.26 1.83 -3.42 9.62 0.529999 -4.93 -2.89 0 0 0
```
