ThresholdVal
指定常数作为阈值,给向量中的元素做设阈操作。与threshold接口不同的是,不在阈值范围内的向量元素将被设置成指定值value。
比较操作分为三类,由接口函数名指定,包括:
- HMPPS_Threshold_LTVal

如果源向量src是复数序列,此时参数level必须是实数,计算公式为:

 - HMPPS_Threshold_GTVal

如果源向量src是复数序列,此时参数level必须是实数,计算公式为:

 
- HMPPS_Threshold_LTValGTVal
该模式要求源向量的元素同时满足大于下边界和小于上边界的条件。参数levelLT是下边界,levelGT是上边界。小于levelLT的元素会被设为valueLT,大于levelGT的元素会被设为valueGT。要求levelLT必须小于或等于levelGT。计算公式如下:

 
函数接口声明如下:
- 整型数的操作:
HmppResult HMPPS_Threshold_LTVal_16s(const int16_t* src, int16_t* dst, int32_t len, int16_t level, int16_t value);
HmppResult HMPPS_Threshold_LTVal_32s(const int32_t* src, int32_t* dst, int32_t len, int32_t level, int32_t value);
HmppResult HMPPS_Threshold_GTVal_16s(const int16_t* src, int16_t* dst, int32_t len, int16_t level, int16_t value);
HmppResult HMPPS_Threshold_GTVal_32s(const int32_t* src, int32_t* dst, int32_t len, int32_t level, int32_t value);
HmppResult HMPPS_Threshold_LTValGTVal_16s(const int16_t* src, int16_t* dst, int32_t len, int16_t levelLT, int16_t valueLT, int16_t levelGT, int16_t valueGT);
HmppResult HMPPS_Threshold_LTValGTVal_32s(const int32_t* src, int32_t* dst, int32_t len, int32_t levelLT, int32_t valueLT, int32_t levelGT, int32_t valueGT);
 - 浮点数的操作:
HmppResult HMPPS_Threshold_LTVal_32f(const float* src, float* dst, int32_t len, float level, float value);
HmppResult HMPPS_Threshold_LTVal_64f(const double* src, double* dst, int32_t len, double level, double value);
HmppResult HMPPS_Threshold_LTVal_32fc(const Hmpp32fc* src, Hmpp32fc* dst, int32_t len, float level, Hmpp32fc value);
HmppResult HMPPS_Threshold_GTVal_32f(const float* src, float* dst, int32_t len, float level, float value);
HmppResult HMPPS_Threshold_GTVal_64f(const double* src, double* dst, int32_t len, double level, double value);
HmppResult HMPPS_Threshold_GTVal_32fc(const Hmpp32fc* src, Hmpp32fc* dst, int32_t len, float level, Hmpp32fc value);
HmppResult HMPPS_Threshold_LTValGTVal_32f(const float* src, float* dst, int32_t len, float levelLT, float valueLT, float levelGT, float valueGT);
HmppResult HMPPS_Threshold_LTValGTVal_64f(const double* src, double* dst, int32_t len, double levelLT, double valueLT, double levelGT, double valueGT);
 - 整型数的原址操作:
HmppResult HMPPS_Threshold_LTVal_16s_I(int16_t* srcDst, int32_t len, int16_t level, int16_t value);
HmppResult HMPPS_Threshold_GTVal_16s_I(int16_t* srcDst, int32_t len, int16_t level, int16_t value);
HmppResult HMPPS_Threshold_LTValGTVal_16s_I(int16_t* srcDst, int32_t len, int16_t levelLT, int16_t valueLT, int16_t levelGT, int16_t valueGT);
HmppResult HMPPS_Threshold_LTValGTVal_32s_I(int32_t* srcDst, int32_t len, int32_t levelLT, int32_t valueLT, int32_t levelGT, int32_t valueGT);
 - 浮点数的原址操作:
HmppResult HMPPS_Threshold_LTVal_32f_I(float* srcDst, int32_t len, float level, float value);
HmppResult HMPPS_Threshold_LTVal_64f_I(double* srcDst, int32_t len, double level, double value);
HmppResult HMPPS_Threshold_LTVal_32fc_I(Hmpp32fc* srcDst, int32_t len, float level, Hmpp32fc value);
HmppResult HMPPS_Threshold_GTVal_32f_I(float* srcDst, int32_t len, float level, float value);
HmppResult HMPPS_Threshold_GTVal_64f_I(double* srcDst, int32_t len, double level, double value);
HmppResult HMPPS_Threshold_GTVal_32fc_I(Hmpp32fc* srcDst, int32_t len, float level, Hmpp32fc value);
HmppResult HMPPS_Threshold_LTValGTVal_32f_I(float* srcDst, int32_t len, float levelLT, float valueLT, float levelGT, float valueGT);
HmppResult HMPPS_Threshold_LTValGTVal_64f_I(double* srcDst, int32_t len, double levelLT, double valueLT, double levelGT, double valueGT);
 
参数
参数名  | 
描述  | 
取值范围  | 
输入/输出  | 
|---|---|---|---|
src  | 
指向源向量的指针。  | 
非空  | 
输入  | 
dst  | 
指向目标向量的指针。  | 
非空  | 
输出  | 
srcDst  | 
指向原址操作向量的指针。  | 
非空  | 
输入/输出  | 
len  | 
向量长度。  | 
(0,INT_MAX]  | 
输入  | 
level  | 
阈值。  | 
不限,视类型而定  | 
输入  | 
value  | 
设定值。  | 
不限,视类型而定  | 
输入  | 
levelLT  | 
阈值下界。  | 
小于或等于levelGT  | 
输入  | 
levelGT  | 
阈值上界。  | 
大于levelLT  | 
输入  | 
valueLT  | 
下界替换值。  | 
不限,视类型而定  | 
输入  | 
valueGT  | 
上界替换值。  | 
不限,视类型而定  | 
输入  | 
返回值
- 成功:返回HMPP_STS_NO_ERR。
 - 失败:返回错误码。
 
错误码
错误码  | 
描述  | 
|---|---|
HMPP_STS_NULL_PTR_ERR  | 
src、dst、srcDst这几个入参中存在空指针。  | 
HMPP_STS_SIZE_ERR  | 
len小于或等于0。  | 
HMPP_STS_THRESHOLD_ERR  | 
阈值下界大于阈值上界。  | 
HMPP_STS_THRESH_NEG_LEVEL_ERR  | 
阈值小于0。  | 
注意
在所有的复数操作中,level必须是正数。
示例
#define  BUFFER_SIZE_T 20
void ThresholdValExample(void)
{
    float src[BUFFER_SIZE_T] = {-1.63, 0.92, 6.15, 3.34, -1.28, 4.53, 8.79, 4.23, 2.18,  9.69,
                              5.34,  8.03, 1.90, 8.76, 4.58,  0.98, 4.30, 8.03, 11.19, 8.41};
    float dst[BUFFER_SIZE_T] = {0.00};
    int32_t i;
    HmppResult result = HMPPS_Threshold_LTVal_32f(src, dst, BUFFER_SIZE_T, 3.14, -2.71);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    printf("Threshold1: result = %d.\ndst1 = ", result);
    for (i = 0; i < BUFFER_SIZE_T; i++) {
        printf(" %.2f   ", dst[i]);
    }
    HMPPS_Zero_32f(dst, BUFFER_SIZE_T);
    result = HMPPS_Threshold_GTVal_32f(src, dst, BUFFER_SIZE_T, 8.51, 2.71);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    printf("\nThreshold2: result = %d.\ndst2 = ", result);
    for (i = 0; i < BUFFER_SIZE_T; i++) {
        printf(" %.2f   ", dst[i]);
    }
    HMPPS_Zero_32f(dst, BUFFER_SIZE_T);
    result = HMPPS_Threshold_LTValGTVal_32f(src, dst, BUFFER_SIZE_T, 3.14, 2.71, 8.51, -2.71);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    printf("\nThreshold3: result = %d.\ndst3 = ", result);
    for (i = 0; i < BUFFER_SIZE_T; i++) {
        printf(" %.2f   ", dst[i]);
    }
}
运行结果:
Threshold1: result = 0. dst1 = -2.71 -2.71 6.15 3.34 -2.71 4.53 8.79 4.23 -2.71 9.69 5.34 8.03 -2.71 8.76 4.58 -2.71 4.30 8.03 11.19 8.41 Threshold2: result = 0. dst2 = -1.63 0.92 6.15 3.34 -1.28 4.53 2.71 4.23 2.18 2.71 5.34 8.03 1.90 2.71 4.58 0.98 4.30 8.03 2.71 8.41 Threshold3: result = 0. dst3 = 2.71 2.71 6.15 3.34 2.71 4.53 -2.71 4.23 2.71 -2.71 5.34 8.03 2.71 -2.71 4.58 2.71 4.30 8.03 -2.71 8.41