利用Hilbert变换提取信号瞬时特征的算法实现
研究了在工程中如何通过算法来实现利用 Hilbert 变换提取信号的瞬时特征。深入地分析了如何利用数值微分法提高提取瞬时频率特征的精度。最后,给出了一种可行的算法,并通过实验验证了这种方法可以在工程中有效地提取信号的瞬时频率特征。84微机发展第13卷①H(x)=y;H(x)=y;(i=0,1,…n)(j=0,1(11)②在每个小区间/x1,x1+17i=0,1,…,n-1)上由相关定理知:当划分的小区间的长度趋于零时H(x)是三次多项式。s(x)及其一至三阶导数分别一致收敛到f(x)及其一至可以写出分段三次 Hermite插值函数的分段表达式:三阶导数。所以用三次样条插值函数去近似表达用离散值(x)=(1+2x-x过+)2v;+表示的原函数,具有较高的可靠性。3)两种插值的比较挨尔米特 Hermite插值较三次样I-i,1+2条插值具有较好的稳定性与收敛性,但它只能休让各段曲线在连接点上的连续性,而不能保证整条曲线在这些点上y+1Ditl的光滑性。而有时不仅要求曲线连续,而且要求曲线的曲X/(i=0,18)率也连续即要求分段插值函数具有连续的一阶导数,埃H(x)的导数为尔米特 Hermite插值此时就不能满足上述要求6次样条插值较埃尔米特 Hermite插值具有较好的H(x光滑程度,用三次样条插值函数求数值导数比用埃尔米特+2(x-x2(xHermite插值可靠性大,但计算比较复杂,二者的区别见图h2yV+17, h(i-0,12)三次样条插值。已知函数y=f(x)在区间/a,b上的n+1个节点上的值y=f(x;)(i=0,1,…m),求插值函数s(x),使(i=0,1图4 Hermite插值与三次样条插值的比较图2在每个小区间x,x+1(=0.1.…n-1)上利用埃尔米特 Hermite插值得到的2FSK信号的瞬时s(x是三次多项式,记为s(x频率见图5,利用二次样条插值得到的该信号的瞬时频率③3(x)在la,b/上二阶连续可徵。见图6。数s(x)称为f(x)的三次样条插值函数可以利用节点处的二阶导数值为参数,也可以利用节点处的导数值为参数求三次样条插值涵数的表达式。若利用节点处的一阶导数值为参数,求得的三次样条插值函数的表达式为(x)=M-1x-x-)36 h6 hMihi5 DEMeN5a亩pai66hx∈[x;,x+17,b-x+1-x,S"(x)=M图5由 Hermite插值提取图6由三次样条插值提取(j=0,1的2FSK信号的瞬时频率的2FSK信号的瞬时频率对s(x)进行求导,利用S(x)在节点处一阶导数连从图5、图6可以看出利用三次样条插值得到的瞬时续的性质结合边界条件求解出参数M,把求得的参数代频率可以准确反映出信号具有的的摒时频率特征而利用入公式(10),即得三次样条插值函数的s(x)分段表示式。埃尔米特 Hermite插值得到的瞬时频率与信号具有的瞬s;(x)的导数为时频率特征不符。这是因为利用数值微分法求瞬时频率插值以后喫进行求导。三次样条插值函数具有连续的二阶M2 hiM; 2 hj导数,因而具有较好的光滑程度,符合求导条件,所以可以J+1-h(M2+1-M/)准确求出信号的瞬时频率;而埃尔米特 Hernite插值.不够光滑,虽能保证插值多项式收敛于原函数,但不能保证插x Elx,x;+1 h,=xi+I-x, S(xj )=M;值多顷式的导数收敛于原函数的导数,所以求得的值与信o1994-2010ChinaAcademicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net第6期刘慧婷等:利用 Hilbert变提取信号瞵时特征的算法实现号实际的瞬时频率值不符。实验结果和理论分析结果是(1) Hilbert变换只能近似应用于窄带信号,即形如纹的(t)=a(1)cosu+6(1)),其中>>B(B为信号带2.3.3结论宽)的信号。但实际应用中,存在许多非窄带信号, Hilbcrt利用数值微分法求瞬时频率ω(t)的步骤可以归纳变换对这些信号无能为力为:首先通过三次样条插值得到分段多项式p(1),(2)对于任意给定时刻,通过 Hilbert变换运算后的结pp(抄);然后分别对分段多项式p(t),Pp()关于变量t果只能存在一个频率值,即只能处理任何时刻为单一频率进行求导,得到pd(,ppd(t);最后求出每一时刻t所对的信号。这显然不合理,因为在实东中同一信号会含有多应的导数值,即求得t(t,u(t)。再把求得的值代入公种频率成分式(6)就完成了提取瞬时频率ω(1)的过程。求解结果见(3)对信号进行 Hilbert变换时,信号的两端会出现严图7重的端点效应。提取某些信号瞬时特征所得的瞬时频率在局部出现了负数,端点效应是造成负频率的一个原因而端点效应可以通过利用特征波对原有数据序列进行延拓的方法来解决,具体解决办法将在今后讨论。尽管目前出现了EMD担论4,其目的是将不满足Hibt变换的信号进行分解得到若干个IMF( intrinsic mode function),然后进行 Hilbert运算,达到提取信号瞬时特征的目的。该理论开辟了信号处理的新空间。但它还不够成熟还需喫进一步的完善和研究图7利用数值微分法提取信号的瞬时频率特征参考文献从图7可以看出,以三次烊条指值进行的数值微分可[]黄长蓉. Hilbert变换及其应用[J].成都气象学院学报以准确岀提取岀信号的瞬时频率特征。199,14(3):273-276.[2]杨小牛,楼A义,徐建良.软件无线电原理与应用[M].北3结束语京:电子工业出版社,2001在工程中, Hilbert变换使得我们对短信号和复杂信号[3]丁丽妤.数值计算方法[M].北京:北京理工大学出版社,的摒时特征的提取成为可能特别是对瞬时频率特征提1997取,在工程中具有十公重要的意义。文中讨论的利用三次[4] Huang N e. The empirical mode decomposition and the hilbert样条插值进行数值徵分以提取瞬时特征的方法是可行的,spectrum for nonlinear and nor stationary time series anal ysis但还存在着如下问题。[].Proc.R.soc.Lond.A,1998,454:903-995(上接第81页)218994。例22(x)=(1-2siny=223101075一般的(A算法计算了120代,求到的最大值为454176.219。154370083改进的α算法计算了34代,求到的最大值为1048575.875。改进后的αA算法收敛速度(指迭代次数)比一般GA算法几乎快了一个数量级,精度也提高了不少,特别是例2的最大值提高一倍多,速度提高这么快是未曾料到的y=74958参考文献+4X Axl Thla[1]陈国良.遗传算法及其应用[M]·北京:人民邮电出版社,图2函数2的图像1996一般GA算法计算了20代,求到的最大值为[2]袁亚湘,孙文瑜.最优化理沦与方法[M]北京:科学出版社,19991.218983[3]张铃,张钹·遗传算法杋理的硏究[J]·软件学报,改进(A算法计算了5代,求到的最大值为2000,11(7):945952o1994-2010ChinaacAdemicJournalElectronicPublishingHouse.Allrightsreservedhttp://www.cnki.net
- 2020-12-05下载
- 积分:1
LabWindows CVI 6.0 编程指南
LabWindowsCVI6.0编程指南日录第1章绪论简介程序开发概述在中使用语言的程序结构的新特性装第2章 Labwindows/CVⅥI的开发环境载入、运行和编辑源程序的主要窗口源代码编辑工具操作用户界面的控件生成交互式代码访问用户界面库函数面板执行和调试程序单步执行断点显示和编辑数据第3章 Labwindows/CV应用程序设计38图形用户界面用户界面编辑器源代码连接代码生成器建立用户界面文件仗用函数面板和函数库源代码分析生成随机数组构建⊥程运行完整的工程添加分析功能修改用户界面编写回调函数运行程序用户事件处理用户事件回调函数第4章基本函数库用户界面库(面板()操作用户界面管理(菜单结构(控件曲线图带状图()操作弹出面板函数格式化输入输出斥(文件输入输出(字符串处理(数据格式化(实用函数库(定时等待(日期时间(文件应用(路径应用(端口(函数库接口介绍函数库概述编程举例第5章高级函数库116高级分析库概述应用实例斥网络化仪器协议与库服务器程序设计客户程序设计介绍发送数据程序设计接收数据程序设计工具厍(L具斥简介密码设计工具条设计分页界面设计系统托盘设计第6章数据库应用程序开发— SQL Toolkit183概述功能概述的安装入门数据库基木概念结构化查询语言控件数据库基本操作数据库操作基木步骤使用的函数库数据斥高级操作设置连接属性设置语句属性操作复合语句第7章高级程序设计230和的基础知识创建和调试使用概述编程实例多线程概述两种多线程机制多线稈间的数据保护防止死锁监视和控制次线程线程的优先级线程局部变量其它一些要注意的问题第8章 ActiveX技术261技术简介使用控件设计带有控件的应用程序需要注意的问题创建服务器应用程序、对象和接口创建服务器工具生成的代码库—服务器函数联编并发布服务器注册线程模式调试服务器些建议、提示和技巧第9章虚拟仪器软件设计301虚拟仪器概述规范规范概述虚拟仪器软件结构仪器驱动程序开发仪器驱动程序模型函数的应用函数面板的设计动态链接库的牛成仪器软面板的设计仪器软血板软面板的设计叫执行文件的生成帮助文件的制作安装盘的制作规范的安装要求制作安装盘驱动程序仪器可互换性驱动程序的结构驱动程序的其他功能驱动程序开发向导驱动程序与驱动程序附录A函数Fmt、Scan的标识符和修饰符附录BS叫L命令348虚拟仪器软件开发环境—一编程指南第1章绪论是公司美国国家仪器公司,简称公司推出的交互式语言开发平台。将功能强大、使用灵活的语言平台与用于数据采集分析和显示的测控专业L具有机地结合起来,利用它的集成化开发环境、交互式编程方法、函数面板和卡富的库函数大大增强了语言的功能,为熟悉语言的开发设计人员编写检测系统、自动测试环境、数据采集系统、过程监控系统等应用软件提供了一个理想的软件廾发坯境。考虑到人多数测控软件设计人员已经掌握了语言,因此本书的重点放在如何使用的编程环境和应用开发测控应用程序上。本书使用的版本是1.1 Labwindows/CV简介是为语言程序员提供的软件开发系统,在其交互式开发环境中编写的程序必须符合标准规范。使用可以完成如下工作:交互式的程厅开发;只有功能强大的函数库,用来创建数据米集和仪器控制的应用程序充分利用宄备的软件工具进行数据采集、分析和显示利用向导开发仪器驱动程序和创建服务器为其它程序开发目标模块、动态连接库)、语言库。在开发环境中可以利用其提供的库函数来实现程序设计、编辑、编译、链接和标准语言程序调试。在该丌发环垙中可以用丰富的函数库来编写程序,此外每个函数都有一个叫做函数面板()的交互式操作界面,在函数面板中可以执行该函数并可以生成调用该函数的代码,也可通过右击面板或控件获得有关函数、参数、函数类和函数库的帮助。在的交互式环境中编写程序必须符合标准语言的规范。另外,在开发应用程序时可以使用编译好的语言目标模块,动态链接库静态库和仪器驱动程序(如何在中载入目标模块和动态链接斥将在第章介绍)。的功能强大在于它提供了丰富的函数库。利用这些库函数除可实现常规的程序设计外,还可实现更加复杂的数据采集和仪器控制系统的廾发。其中比较重要的函数库如图所示仪器库是的特殊资源。它包括和仪器的驱动程序,如示波器、多用表和函数发生器,每个驱动程序都提供可编辑的源代码。使用开发工只提供的库函数可以创建自己的仪器驱动程序,可以创建单个仪器、多个仪器或实际上并不存在的虚拟仪器的驱动程序,在创建仪器驱动程序过程中可以虚拟仪器软件开发环境—一编程指南仪器库厍数据采集库数据采集厍格式化和厍数据分析分析库高级分析库函数库数据表示用户界面库动态数据交换厍网络和进程通讯传输控制协议库库标准凶数库的函数厍使用的其它库函数(本书在第章将介绍仪器驱动程序的开发)。使用的用户界面编辑器可以创建并编辑图形用户界面,而使用的用户界面库函数可以在程序中创建并控制。此外,为面板的设计,准备了许多专业控件,如:曲线图控件、带状图控件、表头、旋钮和指示灯等,以适应测控系统软件开发的需求,利用这些控件可以设计出专业的测控程序界面1.2 Labwindows/GVI程序开发概述在下开发应用程序和使用其它语言和开发环境一样,要保持良好的编程习惯。例如,在编写代码之前要改计程序的功能结构,冋时在代码中要有良好的文档和注释,这些可以帮助你更好的进行管理程序的开发。1.2.1在 Labwindows/cV中使用C语言使用的是语言,并且为仪器方面的应用程序开发增加了许多语言所不具备的功能。在使用之前,需要有语言的基础,在中可以使用它提供的标准厍函数。1.2.2 Labwindows/GVI的程序结构大多数工程测控软件都包含如下内容虚拟仪器软件开发环境—一编程指南用户界面程序控制:数据采集数据分析它们之间的相互关系如图所示。图是应用程序的组成示意图。其中,用户界面、数据呆集和数据分析部分将必要的信息输入给程序控制部分进行处理,每个部分还可再分成若干个子部件用户界面数据采集数据分析面板格式化菜单数字信号处理对话框统计朴学图表数据采集曲线拟合硬拷贝输出仪器驱动程序数组操作程序控制控制逻辑数据存储图应用程序各部分的相互关系用户界面用用户界面编辑器能轻松地建立复杂的交互式面板。设计的过程中,开发人员常常要确定程序如何获取并显示薮据,对菜单、面板、控件和对话框如何操作等问题,因此用户界面自然成为程序设计的起点二、代码生成器生成程序框架在用户界面绽辑器中完成设计后,能够使用代码生成器自动生成基于组件的程序框架。代码生成器自动写出所有控件的回调函数的框架,创建主程序,从而在程序启动时加载并显示窗体。代码编辑器自动生成程序的通用代码,从而节省了人量的程序开发时间。、程序控制程序控制部分同薮据采集、数据分析和用户界面协调运作。它包括管理程序流程的控虚拟仪器软件开发环境—一编程指南制逻辑和用户定义的支持函数。大多数控制程序的代码是手写完成的,学习软件光盘中所提供的例稈,能够很好理解如何编写测控稈序的代码。注意例程中回调函数的使用,它可以大大简化应用流程的控制四、数据采集通常的测控程序必须对从仪器或数据采集()设备的数据采集进行控制,程序的其它部分是对这些数据进行分析和显示各种库提供用来创建数据采集部分的函数,用这些库函数控制和设备以及的数据采集设备。此外,仪器斥包括多种常用的和仪器的驱动程序。五、数据分析获取数据后经常需要进行分析。例如,可能要对数据进行格式化、归一化、信号处理、统计和曲线拟合。格式化和库、分析库高级分析库提供了完成这些操作的函数。1.3 LabWindows/CVI6.0的新特性和以前的版本相比有一些改进,并增添了一些功能:用户可以在用户界面编辑器中创建控件,并在的程序中对它进行控制,本书将在第章“使用控件”中介绍用户可以用中的向导创建或者编辑服务器,本书将在第章“创建服务器”中介绍。用户界面厍中包含了一系列新的搾件。另外,对先前版本原有的搾件和菜单也进行了修改,使其更加接近标准的控件,的控件将在第章的的控件”中介绍支持多字节字符的应用。另外,现在的标准库和仪器驱动程序的上具箱包含了用户可以调用的函数和宏,用户可以用它们实现包含多字节字符的语句。在源程序中书写中文不会像先前的版本那样出现乱码。源代码浏览器列出了程序中的所有的文件、函数、变量、数据类型以及宏。用户可以用这个浏览器了解到程序的一个部分如何与另一个部分相互作用,本书将在第章“源代码编辑工具”中介绍这部分内容。用户可以用图形数组浏览窗∏作为调试上具,以图形方式观察生成的维或二维数组,该部分内容将在第章“显示和编辑数据”中介绍。在中,用户可以将多个工程分组到一个工作台。所有关于工程的外来设置都受工作台的保护。使用工作台,使得在同一源代码设置下的多个开发人员更容易共享工程。用户可以在用户界面编辑器中俣存预宄设置好的用户界面控件,以后可以在用户界面面板中使用,本书将在第章“的控件”中介绍
- 2020-12-07下载
- 积分:1