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

Hilbert

该函数计算复解析信号dst,该解析信号dst包含原始实信号src作为实部,计算希尔伯特变换作为虚部。Hilbert变换是根据spec规范参数执行的:样本数len和hint。输入数据将补零或截断为len的大小。

Hilbert函数调用流程如下:

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

函数接口声明如下:

  • 初始化操作:

    HmppResult HMPPS_HilbertInit_32f32fc(int32_t len, HmppsHilbertPolicy_32f32fc **policy);

  • 主函数操作:

    HmppResult HMPPS_Hilbert_32f32fc(const float *src, Hmpp32fc *dst, int32_t len, HmppsHilbertPolicy_32f32fc *policy);

  • 释放内存操作

    HmppResult HMPPS_HilbertRelease_32f32fc(HmppsHilbertPolicy_32f32fc *policy);

参数

参数名

描述

取值范围

输入/输出

src

源向量。

非空

输入

dst

目标向量。

非空

输出

len

向量长度。

(0, INT_MAX]

输入

policy

(init函数中)

双重指针,指向HmppsHilbertPolicy。

非空

输出

policy

(主函数中和release函数中)

指针,指向HmppsHilbertPolicy结构体的指针。

非空

输入

返回值

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

错误码

错误码

描述

HMPP_STS_NO_ERR

表示没有错误。

HMPP_STS_NULL_PTR_ERR

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

HMPP_STS_SIZE_ERR

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

HMPP_STS_MALLOC_FAILED

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

HMPP_STS_MISMATCH

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

注意

  • 调用该接口计算之前,必须调用Init接口初始化HmppsHilbertPolicy_32f规范结构。
  • HmppsHilbertPolicy_32f结构体初始化需在Init函数中进行申请的,用户无法自己进行该结构体申请定义。

示例

void Hilbert_Example()
{
    const int len = 10;
    float src[len];
    Hmpp32fc dst[len];
    HmppsHilbertPolicy_32f32fc *policy = NULL;

    for (int i = 0; i < 10; ++i){
        src[i] = i / 10.0;
    }
    HmppResult result = HMPPS_HilbertInit_32f32fc(len, &policy);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    result = HMPPS_Hilbert_32f32fc(src, dst, len, policy);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    result = HMPPS_HilbertRelease_32f32fc(policy);
    if (result != HMPP_STS_NO_ERR) {
        return;
    }
    for (int i = 0; i < len; ++i) {
        printf("%.2f + %.6fi ", dst[i].re, dst[i].im);
    }

}

运行结果:

0 + 0.550553i, 0.1 + -0.0649839i, 0.2 + -0.0649839i, 0.3 + -0.210292i, 0.4 + -0.210292i, 0.5 + -0.210292i, 0.6 + -0.210292i, 0.7 + -0.0649839i, 0.8 + -0.0649839i, 0.9 + 0.550553i,