Intel IPP 库的安装和测试 vs2015-win10-ipp 2020

参考博客:
1.https://blog.csdn.net/csdn409517589/article/details/87881749
2.https://blog.csdn.net/DJason43/article/details/80171079?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1

1.Intel IPP 库的安装

官网注册并下载所需的IPP版本,或从网络上寻找IPPS下载,并按说明安装。

2.测试

2.1.工程设置——自动开启IPP库

  在新建的工程—属性—Intel Performance Library—Use Intel @Ipp—>Default Linking Method;

2.2.引用头文件——#include "ipp.h"

如此,可正常使用IPP函数。

2.3.工程设置——手动关联库函数

参考教程点此查看

4.计算频谱

4.1.函数功能介绍

计算信号的频谱,主要用到IPP函数库中的快速傅里叶变换(FFT)相关函数和一些常见的乘、加等基本运算。
计算FFT,主要用到ippsFFTInitAlloc_C()和ippsFFTFwd_CToC()两个函数,其中ippsFFTInitAlloc_C()函数用于初始化变量空间和开辟相关缓存,ippsFFTFwd_CToC()函数用于实现FFT的计算。相关函数的介绍和输入输出接口定义可在官方文档ippsman.pdf中找到。

4.2.频谱计算函数

int   CalculateSpectrumByReal(int* rData, int samplePoint, float* specturmData, int &outSpecturmDataLength, 
    int winOpt, int fftOrder)/*实数计算频谱*/
{
    IppStatus status;
    int segement,fftPoint;
    IppsFFTSpec_R_32f* spec;
    
    fftPoint = (int)pow(2.0,fftOrder);        //FFT 点数
    outSpecturmDataLength = fftPoint/2;       //输出数据长度
    if (fftOrder < 10)
    {
        return -2; //FFT阶数设置过小,FFT阶数至少要求10阶
    }
    else if (samplePoint < fftPoint)
    {
        return -1; //数据点数不够
    }
 
    Ipp32f *fData = ippsMalloc_32f(samplePoint);//转为浮点数
    Ipp32f *x = ippsMalloc_32f(fftPoint);      
    Ipp32f *X = ippsMalloc_32f(fftPoint+2);    
    Ipp32f *mag = ippsMalloc_32f(outSpecturmDataLength);    //求abs()后的幅度数据
    memset(fData,0,sizeof(Ipp32f)*samplePoint);
    memset(x,0,sizeof(Ipp32f)*fftPoint);
    memset(X,0,sizeof(Ipp32f)*(fftPoint+2));
    memset(mag,0,sizeof(Ipp32f)*outSpecturmDataLength);
 
    memset(specturmData,0,sizeof(Ipp32f)*outSpecturmDataLength);
    
    ippsConvert_32s32f(rData,fData,samplePoint);
    status = ippsFFTInitAlloc_R_32f(&spec,fftOrder,IPP_FFT_DIV_INV_BY_N,ippAlgHintNone);
 
    segement = (int)(samplePoint/fftPoint);  //做FFT时的分段数
    for (int i=0;i

你可能感兴趣的:(Intel IPP 库的安装和测试 vs2015-win10-ipp 2020)