《基于MATLAB的小波分析应用》课件第13章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《基于MATLAB的小波分析应用》课件第13章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于MATLAB的小波分析应用 基于 MATLAB 分析 应用 课件 13
- 资源描述:
-
1、第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱第第13章章 在在VC环境中使用环境中使用小波工具箱小波工具箱13.1 VC调用MATLAB引擎13.2 VC调用MATLAB的C/C+函数第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱13.1 VC调用调用MATLAB引擎引擎13.1.1 引擎库函数引擎库函数MATLAB提供的引擎库函数主要可以分为以下3类:启动和结束MATLAB进程。向MATLAB发送命令。向MATLAB发送数据或从MATLAB接收数据。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱引擎库函数的头文件名为engine.h,位于目录
2、%matlab%externinclude下面,其中%matlab%表示MATLAB R2008的安装目录(下文若无特别说明,%matlab%均表示MATLAB R2008的安装目录)。引擎库函数的库文件名为libeng.lib,VC 6.0使用的库文件位于目录%matlab%externlibwin32microsoftmsvc60下面。引擎库函数的动态链接库文件名为libeng.dll,位于目录%matlab%binwin32下面。了解这几个文件的位置对将来在VC应用工程中进行目录设置很有用。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱下面简单介绍一下常用的引擎库函数,更
3、加详尽的函数说明请参考MATLAB的帮助文档“C Engine Functions”,它位于“External Interfaces Reference”内容中。注意:所有的引擎库函数名称都有前缀“eng”。1.启动和关闭启动和关闭1)启动引擎:engOpenengOpen函数声明如下:第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱Engine*engOpen(const char*startcmd);该函数启动MATLAB进程,返回MATLAB引擎指针。参数startcmd必须设为NULL。该函数返回一个引擎句柄的指针,指向启动了的MATLAB进程。如果启动MATLAB引擎失
4、败,则返回NULL。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱在进行其他所有的引擎函数之前必须调用engOpen函数,保存返回的引擎指针,以后所有的引擎函数调用都要使用该引擎指针。在调用engOpen函数后,应该立即检查返回的引擎指针是否有效,如果无效,则不能进行其他引擎函数的调用。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2)关闭引擎:engCloseengClose函数声明如下:int engClose(Engine*ep);该函数关闭已经打开的由引擎指针ep指向的MATLAB进程。函数成功返回0,失败返回1。在完成所有的引擎函数调用之后,记着调用该
5、函数关闭已经打开的MATLAB进程,释放资源。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2.向向MATLAB发送命令发送命令可以通过engEvalString函数向MATLAB发送命令。engEvalString函数声明如下:int engEvalString(Engine*ep,const char*string);该函数向由引擎指针ep指向的MATLAB进程发送字符串string命令,让MATLAB执行。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱该函数使用较为频繁。字符串string必须是可执行的MATLAB命令,否则系统忽略该命令。该函数成功返回0
6、,失败返回1,失败的原因可能是使用已经关闭了的MATLAB进程的引擎指针ep。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱3.向向MATLAB发送或接收数据发送或接收数据1)engPutVariable函数engPutVariable函数声明如下:int engPutVariable(Engine*ep,const char*var_name,const mxArray*array_ptr);该函数把变量写入MATLAB引擎的工作空间。参数ep是已经打开的MATLAB引擎指针;var_name为写入引擎工作空间的变量名称;array_ptr为要写入的内容的指针,其类型为mxA
7、rray*,结构mxArray等效于MATLAB工作空间中的阵列,将在下一小节中讲解。结构mxArray的定义在文件matrix.h中。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱如果引擎工作空间中已经存在变量名称为var_name的变量,则用新变量代替已经存在的变量,否则创建新变量。函数成功返回0,失败返回1。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2)engGetVariable函数engGetVariable函数声明如下:mxArray*engGetVariable(Engine*ep,const char*var_name);该函数从MATLAB
8、引擎工作空间复制一个变量。参数ep是已经打开的MATLAB引擎指针;var_name为引擎工作空间中的变量名称,是要复制的对象。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱如果engGetVariable函数调用成功,返回一个mxArray类型的指针,该指针指向一个新建的实例,所以当不用该变量时要记得调用mxDestroyArray函数释放其内容。如果engGetVariable失败,则返回空指针NULL,失败的原因都是由于指定的变量var_name不存在。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱4.其他函数其他函数1)engSetVisible函数en
9、gSetVisible函数声明如下:int engSetVisible(Engine*ep,bool value);该函数显示或隐藏MATLAB窗口。参数ep是已经打开的MATLAB引擎指针;value是为MATLAB设定的可见性设置。当value值为true时,MATLAB窗口可见,当value值为false时,MATLAB窗口不可见。engSetVisible函数成功返回0,失败返回1。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱下面的代码打开MATLAB引擎,并隐藏MATLAB窗口。Engine*ep;ep=engOpen(NULL);engSetVisible(ep,
10、true);第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2)engGetVisible函数engGetVisible函数声明如下:int engGetVisible(Engine*ep,bool*value);该函数判断MATLAB窗口当前是否可见。参数ep是已经打开的MATLAB引擎指针;value值为返回MATLAB当前的可见性属性。engGetVisible函数成功返回0,失败返回1。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱13.1.2 mx-函数函数在上一小节中,在engPutVariable函数和engGetVariable函数中已经接触到了m
11、xArray数据结构。mxArray数据结构相当于MATLAB语言中的MATLAB阵列,它可以表示数量、向量、矩阵、字符串、单元和结构体等。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱在上一小节中介绍了可以使用engPutVariable函数和engGetVariable函数对mxArray进行读写。有时用户还希望对mxArray对象进行其他操作,比如创建、删除和修改等操作。MATLAB的C/C+函数库中定义了一系列函数来完成对mxArray对象的操作,通常把这簇函数称为mx-函数,这簇函数的定义在文件中matrix.h中。下面简单介绍这簇函数中的常用函数,关于这簇函数具体详
12、尽的说明和用法请参阅MATLAB的帮助文档“C MX-Functions”,它位于“External Interfaces Reference”内容中。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱1.创建和删除创建和删除mxArray对象对象1)创建mxArray对象对每种类型mxArray对象,都分别由相应的函数来创建,这些函数的名称具有前缀“mxCreat”。例如创建一个二维的double类型的mxArray对象使用函数mxCreatDoubleMatrix,该函数的声明如下:第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱mxArray*mxCreateD
13、oubleMatrix(int m,int n,mxComplexity ComplexFlag);其中,参数m为mxArray阵列的行数,n为mxArray阵列的列数,ComplexFlag的取值为mxREAL或mxCOMPLEX,分别表示阵列是实数阵列还是复数阵列。函数如果调用成功,则返回一个指向新创建的二维double类型的mxArray对象的指针,否则返回空指针NULL。表13-1给出了创建mxArray对象的常用函数。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱表表13-1 mxArray对象的创建函数对象的创建函数第第13章章 在在VC环境中使用小波工具箱环境中使
14、用小波工具箱2)删除mxArray对象mxArray对象使用结束后要使用mxDestroyArray函数从内存中删除,以释放资源。mxDestroyArray函数的声明如下:void mxDestroyArray(mxArray*array_ptr);其中,array_ptr为要删除的mxArray对象指针。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱下面的代码显示了创建和删除mxArray对象的使用方法。mxArray*pdmx=mxCreateDoubleMatrix(3,3,mxREAL);/创建一个3*3矩阵/进行其他操作mxDestoryArray(pdmx);/删
15、除矩阵 第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2.类型判断函数类型判断函数在对mxArray对象进行操作之前,常常要知道mxArray对象的类型,比如是实数矩阵还是复数矩阵等。MATLAB提供了一序列的函数来判断mxArray对象的类型,这类判断函数的名称都带有前缀“mxIs”,函数返回值为bool类型的变量,表明判断结果的真假。表13-2给出了这些判断函数的简要说明。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱表表13-2 类型判断函数类型判断函数第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱3.mxArray对象的维数对象的维数1)
16、mxGetM函数mxGetM函数声明如下:int mxGetM(const mxArray*array_ptr);mxGetM函数用来得到阵列的行数。其中,array_ptr为指向矩阵阵列的指针,返回值即为阵列的行数。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2)mxGetN函数mxGetN函数声明如下:int mxGetN(const mxArray*array_ptr);mxGetN函数用来得到阵列的列数。其中,array_ptr为指向矩阵阵列的指针,返回值即为阵列的列数。注意:这两个函数的输入参数还可以是多维阵列对象的指针。第第13章章 在在VC环境中使用小波工具箱环
17、境中使用小波工具箱3)mxGetNumberOfDimensions函数mxGetNumberOfDimensions函数声明如下:int mxGetNumberOfDimensions(const mxArray*array_ptr);mxGetNumberOfDimensions函数用来获得阵列的维数。其中,array_ptr为指向阵列的指针,返回值即为阵列的维数。mxGetNumberOfDimensions函数只能得到阵列的维数,而不能得到阵列各维的大小,如果要得到大小,可以使用mxGetDimensions函数。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱4)mxG
18、etDimensions函数mxGetDimensions函数声明如下:const int*mxGetDimensions(const mxArray*array_ptr);mxGetDimensions函数得到阵列各维的元素个数。其中,array_ptr为指向阵列的指针,返回值为一个整数数组,各维的元素个数保存在这个数组中。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱5)mxSetM函数mxSetM函数声明如下:void mxSetM(mxArray*array_ptr,int m);mxSetM函数设定阵列的行数。其中,array_ptr为指向矩阵阵列的指针,m指定阵列的
19、行数。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱6)mxSetN函数mxSetN函数声明如下:void mxSetN(mxArray*array_ptr,int n);mxSetN函数设定阵列的列数。其中,array_ptr为指向矩阵阵列的指针,n指定阵列的行数。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱4.mxArray对象访问函数对象访问函数MATLAB提供了很多函数来访问和操作mxArray对象,它们都是通过mxArray对象的指针来对对象数据进行读写的。这类函数名称都带有前缀“mxGet”或“mxSet”。表13-3列出了所有的mxGet-函数。
20、表13-4列出了所有的mxSet-函数。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱表表13-3 mxGet-访问函数列表访问函数列表第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱表表13-4 mxSet-访问函数列表访问函数列表第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱5.其他函数其他函数mx-函数簇里还有几个函数上文没有提到,现列于表13-5中,以供参考。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱表表13-5 杂类函数列表杂类函数列表第第13章章 在在VC
21、环境中使用小波工具箱环境中使用小波工具箱13.1.3 VC调用调用MATLAB引擎的设置引擎的设置要实现在VC集成环境中调用MATLAB引擎,完成需要的运算与绘图,要在VC集成环境中做一些设定。1.目录设置目录设置1)添加头文件目录第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱首先启动VC,选择菜单“Tools”“Options”,此时将弹出“Options”对话框,如图13.1所示;在Option对话框中,选择“Directories”属性页,确认“Show directories for”下拉列表框中选择的是“Include files”;然后在“Directories”中
22、添加目录“%MATLAB%EXTERNINCLUDE”,其中%MATLAB%表示MATLAB R2008的安装目录,本电脑为“C:MATLABR2008”;最后点击“OK”按钮确认添加。注意,原来有三条目录在里面。只要点击最下面就可以输入目录添加了,也可以使用右边的按钮选择目录。添加了头文件目录的Options对话框如图13.1所示。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱图13.1 在Options对话框中添加头文件目录第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2)添加库文件目录在Options对话框中,更改“Show directories for
23、”下拉列表框中的选项,确保选中的是“Library files”;然后在“Directories”中添加目录“%MATLAB%EXTERNLIBWIN32 MICROSOFTMSVC60”,其中%MATLAB%表示MATLAB R2008的安装目录,本例中为“C:MATLAB R2008”;最后点击“OK”按钮确认添加,如图13.2所示。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱图13.2 在Options对话框中添加库文件目录第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱2.添加库文件添加库文件除了在Options对话框中进行目录设置以外,要顺利使用MAT
24、LAB引擎函数,还要对工程指定引擎函数的库文件。在向工程中添加库文件之前,先要创建一个VC工程文件。首先创建一个名为EngDemo的基于对话框的VC工程,如图13.3所示。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱图13.3 新建的VC工程:EngDemo第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱指定库文件有如下两种方法。方法一:使用工程设置对话框来添加库文件。在菜单中选择“Project”“Setting”命令,打开工程设置(Project Settings)对话框,在“Link”页面的“Object/library modules”编辑框中添加两个库
25、文件:libeng.lib和libmx.lib。添加之后的对话框如图13.4所示。最后点击“OK”按钮确认库文件添加。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱图13.4 在工程设置对话框中添加库文件第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱方法二:使用添加文件对话框添加库文件。(1)选择菜单中的“Project”“Add To Project”“Files”命令,将打开如图13.5所示的“Insert Files into Project”(添加文件)对话框。第第13章章 在在VC环境中使用小波工具箱环境中使用小波工具箱图13.5 “Insert Fi
展开阅读全文