微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Intel Performance Primitives 进行流过滤

如何解决使用 Intel Performance Primitives 进行流过滤

我尝试使用 ippsFirsR_32f 就地过滤数据,如 in this example 所示。但它没有描述,如何将其放入一个循环中并无间隙地过滤多个缓冲区。 所以我尝试了以下方法

        const int LEN = 100;
        const int TAPS_LEN = 8;

        IppsFirspec_32f* pSpec;
        float* src,* dst,* taps;
        Ipp8u* buf;
        int             specsize,bufSize;

        //get sizes of the spec structure and the work buffer
        ippsFirsRGetSize(TAPS_LEN,ipp32f,&specsize,&bufSize);

        src = ippsMalloc_32f(LEN + TAPS_LEN - 1);
        for (int i = 0; i < LEN + TAPS_LEN - 1; i++) src[i] =1;
        dst = src;
        taps = ippsMalloc_32f(TAPS_LEN);
        for (int i = 0; i < TAPS_LEN; i++) taps[i] = 1;
        pSpec = (IppsFirspec_32f*)ippsMalloc_8u(specsize);
        buf = ippsMalloc_8u(bufSize);

        //initialize the spec structure
        ippsFirsRInit_32f(taps,TAPS_LEN,ippAlgDirect,pSpec);
        std::vector<Ipp32f> out;
        //apply the FIR filter
        for (int i = 0; i < 3; i++) {
            for (int i = 0; i < LEN; i++) src[i] = 2;
            ippsFirsR_32f(src + TAPS_LEN - 1,dst,LEN,pSpec,src,NULL,buf);
            out.insert(out.end(),dst + LEN);
        }

但结果 out 看起来像这样:

enter image description here

我预计一开始会上升,然后在 16 点持平。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。