中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

AutoCorrNorm

计算src向量(长度为srcLen)的归一化自相关,结果存储到dst向量中。归一化支持正常、有偏和无偏自相关三种模式,计算公式如下:

该函数调用流程如下:

  1. 调用Init初始化HmppsCorrPolicy_32f结构体。
  2. 再调用主函数。
  3. 最后调用Release释放HmppsCorrPolicy_32f函数所包含内存。

函数接口声明如下:

  • 初始化操作:

    HmppResult HMPPS_AutoCorrInit_32f(int32_t srcLen, int32_t dstLen, HmppAlgMode calcMode, HmppsCorrPolicy_32f **policy);

    HmppResult HMPPS_AutoCorrInit_64f(int32_t srcLen, int32_t dstLen, HmppAlgMode calcMode, HmppsCorrPolicy_64f **policy);

    HmppResult HMPPS_AutoCorrInit_32fc(int32_t srcLen, int32_t dstLen, HmppAlgMode calcMode, HmppsCorrPolicy_32fc **policy);

    HmppResult HMPPS_AutoCorrInit_64fc(int32_t srcLen, int32_t dstLen, HmppAlgMode calcMode, HmppsCorrPolicy_64fc **policy);

  • 主函数操作:

    HmppResult HMPPS_AutoCorrNorm_32f(const float *src, int32_t srcLen, float *dst, int32_t dstLen, HmppNormMode normMode, HmppsCorrPolicy_32f *policy);

    HmppResult HMPPS_AutoCorrNorm_64f(const double *src, int32_t srcLen, double *dst, int32_t dstLen, HmppNormMode normMode, HmppsCorrPolicy_64f *policy);

    HmppResult HMPPS_AutoCorrNorm_32fc(const Hmpp32fc *src, int32_t srcLen, Hmpp32fc *dst, int32_t dstLen, HmppNormMode normMode, HmppsCorrPolicy_32fc *policy);

    HmppResult HMPPS_AutoCorrNorm_64fc(const Hmpp64fc *src, int32_t srcLen, Hmpp64fc *dst, int32_t dstLen, HmppNormMode normMode, HmppsCorrPolicy_64fc *policy);

  • 释放内存操作

    HmppResult HMPPS_CorrRelease_32f(HmppsCorrPolicy_32f *policy);

    HmppResult HMPPS_CorrRelease_64f(HmppsCorrPolicy_64f *policy);

    HmppResult HMPPS_CorrRelease_32fc(HmppsCorrPolicy_32fc *policy);

    HmppResult HMPPS_CorrRelease_64fc(HmppsCorrPolicy_64fc *policy);

参数

参数名

描述

取值范围

输入/输出

src

指向源向量指针。

非空

输入

scrLen

源向量长度。

(0, INT_MAX]

输入

dst

指向目标向量指针。

HMPP_ALG_AUTO

HMPP_ALG_DEFAULT

HMPP_ALG_FFT

输出

dstLen

目标向量长度。

非空

输入

algMode

计算使用的算法模型。

HMPP_ALG_AUTO

HMPP_ALG_DEFAULT

HMPP_ALG_FFT

输入

normMode

数据归一化模式。

HMPP_NORM_NORMAL

HMPP_NORM_BIASED

HMPP_NORM_UNBIASED

输入

policy

(init函数中)

指向内存存储CorrPolicy的指针。

非空

输出

policy

(主函数中和release函数中)

指向CorrPolicy结构体的指针。

非空

输入

返回值

  • 成功:返回HMPP_STS_NO_ERR
  • 失败:返回错误码。

错误码

错误码

描述

HMPP_STS_NO_ERR

表示没有错误。

HMPP_STS_NULL_PTR_ERR

当任何指定的指针为空时指示错误。

HMPP_STS_SIZE_ERR

当srcLen或dstLen小于或等于0时指示错误。

HMPP_STS_MISMATCH

Init函数申请内存的问题规模和主函数中实际计算的问题规模不匹配。

HMPP_STS_OVERFLOW_ERR

FFT加速模型的问题规模过大。

HMPP_STS_MALLOC_FAILED

Init函数中进行算法模型所需内存申请失败。

注意

  • 调用该接口计算之前,必须调用Init接口初始化HmppsCorrPolicy_32f规范结构。
  • HmppsCorrPolicy_32f结构体初始化需在Init函数中进行申请的,用户无法自己进行该结构体申请定义。
  • src和dst不能是同一数组,否则可能导致结果错误。
  • 使用HMPP_ALG_AUTO或HMPP_ALG_FFT模式时,当srcLen和dstLen较大时会出现OVERFLOW错误提示。

示例

void AutoCorrNorm_Example()
{
    const int len = 10;
    float src[len];
    float dst[len];
    int32_t srcLen = len;
    int32_t dstLen = len;

    for (int i = 0; i < srcLen; ++i) {
        src[i] = 1;
    }
    HmppsCorrPolicy_32f *policy = NULL;
    HmppResult result = HMPPS_AutoCorrInit_32f(srcLen, dstLen, HMPP_ALG_AUTO, &policy);
    if (result != HMPP_STS_NO_ERR) {
        printf("Init failed");
        return;
    }
    result = HMPPS_AutoCorrNorm_32f(src, srcLen, dst, dstLen, HMPP_NORM_NORMAL, policy);
    if (result != HMPP_STS_NO_ERR) {
        printf("AutoCorr failed");
        return;
    }
    for (int i = 0; i < dstLen; ++i) {
        printf("%.2f ", dst[i]);
    }
    HMPPS_CorrRelease_32f(policy);
}

运行结果:

10 9 8 7 6 5 4 3 2 1