FindNearest
在表中查找最接近指定值向量的元素集合。查找到的每个元素及其索引分别存储在向量outVals和outIndexes中。
其中表中元素必须满足条件:table[n] ≤table[n+1]。最接近指的是:min(|inVals[k] -table[n]|)。
函数接口声明如下:
HmppResult HMPPS_FindNearest_16u(const uint16_t *inVals, uint16_t *outVals, int32_t *outIndexes, int32_t len, const uint16_t *table, int32_t tblLen);
参数
参数名 |
描述 |
取值范围 |
输入/输出 |
---|---|---|---|
inVals |
指向指定元素向量的指针。 |
非空 |
输入 |
outVals |
指向查找结果元素向量的指针。 |
非空 |
输出 |
outIndexes |
指向查找结果元素索引向量的指针。 |
非空 |
输出 |
len |
inVals向量的长度 |
(0, INT_MAX] |
输入 |
table |
指向单调不减向量表。 |
非空 |
输入 |
tblLen |
向量表的长度。 |
(0, INT_MAX] |
输入 |
返回值
- 成功:返回HMPP_STS_NO_ERR。
- 失败:返回错误码。
错误码
错误码 |
描述 |
---|---|
HMPP_STS_NULL_PTR_ERR |
table、inVals、outVals、outIndexes这四个入参中存在空指针。 |
HMPP_STS_SIZE_ERR |
tblLen、len小于或等于0。 |
示例
#define TABLE_SIZE_T 13 #define BUFFER_SIZE_T 11 void FindNearestExample() { uint16_t table[TABLE_SIZE_T] = {32, 434, 486, 545, 766, 976, 1222, 1534, 1687, 3452, 8556, 32452, 56422}; uint16_t inVals[BUFFER_SIZE_T] = {32, 545, 766, 876, 1222, 1334, 1687, 3452, 4556, 32452, 45422}; uint16_t outVals[BUFFER_SIZE_T]; int32_t outIndexes[BUFFER_SIZE_T]; HmppResult result = HMPPS_FindNearest_16u(inVals, outVals, outIndexes, BUFFER_SIZE_T, table, TABLE_SIZE_T); if (result == HMPP_STS_NO_ERR) { printf("outVals :"); for (int i = 0; i < BUFFER_SIZE_T; i++) { printf(" %d", outVals[i]); } printf("\n"); printf("outIndexes:"); for (int i = 0; i < BUFFER_SIZE_T; i++) { printf(" %d", outIndexes[i]); } printf("\n"); } }
运行结果:
outVals : 32 545 766 976 1222 1222 1687 3452 3452 32452 56422 outIndexes: 0 3 4 5 6 6 8 9 9 11 12
父主题: 基础与通用运算