Intel IPP(Intel Integrated Performance Primitives)函数库是一套跨平台的软件函数库,它为用户提供了一套高效、实用的函数集,可用于实现通信、图像、语音等多个数字信号处理领域,关于该函数库的介绍,可查询其官方使用手册或以下几篇博客

Intel IPP的基本使用方法

Intel IPP函数

本文介绍如何利用Intel函数库实现对信号进行频谱计算。

一、算法原理

本文中,信号频谱的计算主要采用Bartlett法进行信号频谱的估计,其基本思想是对信号进行分段FFT计算,然后将分段FFT的计算结果进行累加,从而到达平滑信号频谱的效果;

二、函数介绍

计算信号的频谱,主要用到IPP函数库中的快速傅里叶变换(FFT)相关函数和一些常见的乘、加等基本运算。

计算FFT,主要用到ippsFFTInitAlloc_C()和ippsFFTFwd_CToC()两个函数,其中ippsFFTInitAlloc_C()函数用于初始化变量空间和开辟相关缓存,ippsFFTFwd_CToC()函数用于实现FFT的计算。相关函数的介绍和输入输出接口定义可在官方文档ippsman.pdf中找到。

三、调用示例

下面的代码展示了如何使用IPP相关函数实现对一实信号频谱的计算:

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<segement;i++){        memcpy(x,fData+i*fftPoint,fftPoint*sizeof(Ipp32f));status = ippsFFTFwd_RToCCS_32f(x,X,spec,NULL);  //do fft...ippsMagnitude_32fc((Ipp32fc*)X,mag,outSpecturmDataLength); //abs()...ippsAdd_32f_I(mag,specturmData,outSpecturmDataLength);     }ippsDivC_32f_I(segement,specturmData,outSpecturmDataLength);//求平均ippsLn_32f_I(specturmData,outSpecturmDataLength);   //求Ln,因为IPP函数不支持浮点的10Log10计算这里通过Ln进行转换计算ippsDivC_32f_I(2.3026,specturmData,outSpecturmDataLength);// log(e,10)=2.3026ippsMulC_32f_I(10.0,specturmData,outSpecturmDataLength);  //10log10ippsFFTFree_R_32f(spec);ippsFree(fData);ippsFree(x);ippsFree(X);ippsFree(mag); return status;
}

利用Intel IPP函数库实现信号频谱计算相关推荐

  1. 高级shell脚本编程之函数库、信号与陷进、文件处理、数组、安全性

    高级shell脚本编程之函数库.信号与陷进.文件处理.数组.安全性 1.函数库 把所有需要用到的函数都放到一个文件中,然后每个脚本的开头包含这个文件.例如: #!/bin/sh scope(){ lo ...

  2. fortran使用mkl函数库中的mkl_dcsrsymv计算矩阵与向量的乘积

    用fortran语言编写数值程序时,如果要计算一个大型稀疏矩阵与一个向量的乘积,可以使用下面高效的方法 1. 首先使用CSR格式大型稀疏矩阵进行存储 2. 调用mkl函数库中的mkl_dcsrsymv ...

  3. fortran使用MKL函数库中的scal计算一个标量和向量的乘积

    下面的代码使用MKL函数库中的scal计算一个标量和向量的乘积 program MKL_dotcuse blas95implicit noneinteger, parameter :: n = 10r ...

  4. 【C】【Linux】利用C curses函数库进行终端彩色显示

             以前,只有极少数的哑终端支持彩色显示功能,所以大多数早起的curses函数库都不支持色彩,现在,ncurses和其他大多数现代的curses实现版本都提供了对它的支持.但是遗憾的是, ...

  5. Intel IPP密码库 IPPCP 2018——第二部分 对称密码算法开发说明与示例代码

    2. Symmetric Cryptography 2.1加解密步骤 其中<Alg>指具体的密码算法,<Mode>指ECB.CBC.OFB.CFB.CTR模式. 执行步骤: 步 ...

  6. Intel IPP库概述,合计共5000个函数

    "英特尔IPP"为开发人员提供了高质量.支持生产的低级构造块,用于图像处理.信号处理和数据处理(数据压缩/解压缩和加密)应用程序.它是针对各种Intel架构(Intel®Quark ...

  7. Qt Creator配置Intel IPP库并实现信号带通滤波

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 文章目录 前言 一.环境参数 二.添加步骤 1.安装IPP2018 2.配置环境变量 3.引入lib文件 三. 测试 输出结果 ...

  8. 关于Intel IPP的基本使用方法——参照可设置ipl库

    IPP是个好东西,里面的函数精而全,希望大家好好利用.因为IPP目前很少中文资料,我们只能靠自己摸索.下面就简单说说IPP在VC2005下的基本使用方法. 假定你的IPP是安装在"D:/In ...

  9. 利用python声音处理库librosa提取声音信号的mfcc特征及特征融合

    利用python库librosa提取声音信号的mfcc特征及特征融合 前言 librosa库介绍 librosa 中MFCC特征提取函数介绍 解决特征融合问题 总结 前言 写这篇博文的目的有两个,第一 ...

最新文章

  1. Java培训学习步骤有哪些
  2. 实例分割最新最全面综述:从Mask R-CNN到BlendMask
  3. 飞线5根连接图_“飞线”和“跳线”有什么区别,你用对了吗?电路故障的排查方法...
  4. go语言panic机制的原理
  5. citrix lic申请流程
  6. 《编译原理》实验报告——TINY语言的词法分析
  7. JAVA EE 基本了解
  8. Mysql 查看连接数,状态,最大并发数
  9. .Net Core 学习笔记1——包、元包、框架
  10. http://www.jianshu.com/p/42e11515c10f#
  11. Codeforces 964B(贪心)
  12. 新手必看:PS修图的基本步骤
  13. CAD-Arcgis 坐标校正
  14. github注册关于QQ邮箱验证码问题
  15. mw310r无线路由器怎么设置虚拟服务器,水星mw310r无线路由器接光猫怎么设置?
  16. 计算机软件从高级语言向低级语言转换的两种方式
  17. Wireshark使用指南
  18. CQI related
  19. VMware虚拟机下载安装教程
  20. 求整型矩阵主对角线元素之和

热门文章

  1. [转载]杭州it公司
  2. jpcsp源码解读11:近期笔记
  3. 2018年html模板,2018年最好用的20个bootstrap网站模板
  4. Python办公自动化教程-1.1节-Excel基础概念
  5. 冲压模具行业解决方案
  6. Java多线程与线程并发库高级应用笔记
  7. 商业计划书暗藏“陷阱”快去烧了它吧
  8. 开发一个看起来不是很低端的简单公文流转系统(一)
  9. 如何在Windows 10中设置和测试麦克风
  10. 期货止损的必要性(为什么期货止损不一定会触发)