MATLAB与VC++混合编程实现一维小波多尺度分解.doc_第1页
MATLAB与VC++混合编程实现一维小波多尺度分解.doc_第2页
MATLAB与VC++混合编程实现一维小波多尺度分解.doc_第3页
MATLAB与VC++混合编程实现一维小波多尺度分解.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB与VC+混合编程实现一维小波多尺度分解汉泽西 甘志强 邓武(1.西安石油大学 电子工程学院,陕西 西安 710065;2.)陕西午禾科技有限公司摘要:小波分析近年来应用十分广泛,并逐步成为一个有力的信号分析工具。本文提出一种基于COM的VC+调用MATLAB小波工具箱提供的小波多尺度分解函数的方法,实现对一维信号的多尺度小波分解,并给出应用实例。该方法具有识别率高、开发简单快速、可移植性强等优点。关键词:小波分析;VC+;MATLAB;COM;匝间短路To realize Multi-Scale Wavelet Analysis of 1-D signal by using Mixed Programming Between Matlab and VC+ Han Ze Xi Gan Zhi Qiang Deng Wu(1.School of Electronic Engineering,xian shiyou University,Xian,7100652.)Shaaxi wuhe technology CO,LTDAbstract:Wavelet Analysis has been used in several fields, becoming an useful Signal analytic tool in recent years.This article present a method of calling the Multi-scale Wavelet Analysis function submitted by MATLAB Wavelet Toolbox in VC+ based on COM, achieving the multi-scale wavelet Analysis of 1-D signal, it also gived an applied example. This method has the advantages of High Recognition Rate,Easy to Develop and Good Portability.Keywords: Wavelet Analysis; VC+; MATLAB; COM;short circuit between turns引言 小波分析世纪80年代开始发展成熟起来的一个数学分支,其应用领域十分广泛,并逐步成为信号分析的又一有力工具。MATLAB的小波工具箱为我们提供了小波多尺度分解函数,方便了我们对小波的使用。但是用它所编写的软件不能脱离MATLAB编程环境在Windows平台下直接运行,代码执行效率低下,运行时占较多的系统资源,不能达到某些用户的需求。VC+是由美国Microsoft 公司开发的可视化C/C+集成编程环境,是目前功能最强大的软件开发工具之一。被广泛应用于Win32平台的基础应用程序的开发。 它具有强大的图形界面编程能力且代码执行效率高,可生成脱离VC+环境而独立运行的应用程序。可是VC+在数值处理分析和算法工具等方面不如MATLAB。本文结合VC+和MATLAB 的各自优点,以VC+图形界面作为前台框架,MATLAB作为后台进行数值运算和数据可视化,利用组件对象模型(COM)技术作为媒介,实现了一维小波多尺度分解。1 一维小波多尺度分解原理及其MATLAB实现1.1 一维小波多尺度分解原理 假定信号,即 (1.1) 其中系数为已知。我们现在要将它分解在和空间的两个分量之和,即 (1.2)也就是已知序列分别求出j-1级的近似序列和j-1级的细节序列。根据二尺度关系可以知道, (1.3) 同理 (1.4)这样,容易得到: (1.5) 式中, 。同理可以得到: (1.6)式中, 对上诉分解结果中的近似序列再做一次分解,可得到和,以此类推,直到指定级数的多尺度小波分解为止,分解过程如图1示。图中s为原始信号,cd1,ca1分别为分解后第1层的细节序列和近似序列,cd2,ca2分别为分解后第2层的细节序列和近似序列,以此类推。因为这种算法分解的数据结构是塔式结构,所以这种算法也常被称为塔式算法(Pyramid Algorithm)。 图1 小波多尺度分解 1.2 一维小波多尺度分解及重构的MATLAB实现MATLAB 小波工具箱提供了以下几个实现小波分解和重构的函数:C,L = WAVEDEC(X,N,wname),多尺度一维小波分解函数。其中C为分解结构变量,L为个分解结构以及原始信号长度变量,X为原始信号,N为分解层度,wname为小波类型。X = WAVEREC(C,L,wname),多尺度一维小波重构函数。其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。D = DETCOEF(C,L,N),一维小波变换细节序列提取函数。其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。wname为小波类型。A = APPCOEF(C,L,wname,N),一维小波变换近似序列提取函数。其中C,L为多尺度一维小波分解函数WAVEDEC的计算结果。Y = WRCOEF(type,C,L,wname,N),一维小波系数单支重构函数。其中,当type = a时重构近似序列,当type = d时重构高频系数;C,L,wname,N含义同上。Y = UPCOEF(type,S,wname,N),一维系数的直接小波重构函数。其中type,wname,N含义同上。S为小波分解系数变量。 2 基于COM的VC调用MATLAB一维小波多尺度分解的实现 以下介绍均是在MATLAB 7.0、VC+ 6.0 和Windows XP的基础上实现。2.1 MATLAB函数的COM组件的创建 在MATLAB下建立COM组件,具体创建过程如下:首先在MATLAB编辑器里编辑工程所需M函数文件gzqfenjie.m、myplot.m、 myprocess.m、mysave.m。在MATLAB命令窗口中输入以下命令: comtool;在MATLAB Builder 窗口里新建工程:File-New project.;设置组件属性:在“Component name”项中填写组件名称“Myproject”,这时会生成“Component”类,在“Classname”项中填写“myclass,并移去“Myprojectclass”。添加文件:选中左边工作区的“myclass”,点击Project-Add File.,选择已经编辑好的四个函数文件gzqfenjie.m、myplot.m、 myprocess.m、mysave.m。生成COM 组件:点击BuildCOM Object.,经过一段时间等待,MATLAB 将会生四个函数的COM 组件,默认的保存位置为:workMyproject。打包组件:点击ComponentPackage Component在跳出的界面中钩选include MCR然后点击Create ,上述步骤将产生一个名为Myproject.exe的可自行解压文件文件,用它可以在目标计算机上注册前6步所产生COM组件,以便保持开发软件的可移植性。2.2 VC+ 调用COM 生成的组件建立一个名为COMwavelet 基于对话框的MFC(exe)工程。添加相应控件。现在需对Precompiled Headers 进行设置: 工程设置C/C+Y分类中选择Precompiled Headers, 接着选择M自动使用与补偿页眉, 在其中填写stdafx.h, 最后确定。将上面第步生成Myproject_idl.h、Myproject_idl_i.c以及externinclude 下的mwcomtypes.h和mwcomutil.h文件拷贝到COMwavelet工程目录下,再加入到V C 工程中:选择工程-添加工程-文件,选择刚才拷贝到COMwavelet目录下的四个文件。此时发现工程中出现一个类Imyclass,这就是我们要操作的类。在COMwaveletdlg.cpp中添加如下的头文件。#include component_idl.h#include mwcomtypes.h#include mwcomutil.h#include comdef.h /用于CString 向VARIANT数据类型的转换为界面各控件添加相应代码最后形成界面如图2示。3 应用实例一维小波分解应用领域十分广泛,其中包括一维信号去噪,一维信号识别,一维信号压缩、等方面。小波分析是近年来兴起的一种新的数学分支,它在信号处理、图像压缩、语音编码、模式识别、奇异信号检测、地震勘探以及许多非线性科学领域内获得了巨大的突破,得到广泛的应用。由于篇幅有限,现仅以发电机转子匝间短路故障检测为例说明笔者所实现小波分解界面的应用。目前,用转子动态下气隙线圈探测的方法来检测发电机转子线圈是否发生匝间短路故障是目前研究的热点,其原理是当转子绕组存在匝间短路时,就会引起磁场的不对称,破坏气隙磁场的正常分布,同时故障所在槽的槽漏磁齿谐波也会相应发生变化。在定转子气隙中安装微分探测线圈,其电势波形反映了发电机气隙磁通密度的变化,通过对微分探测线圈上的电势采样数据进行分析和处理,得到探测信号突变点,对故障槽进行定位。通常情况下, 信号的畸变(奇异)分两种情况:在某一时刻,其幅值发生畸变,引起信号的不连续,幅值变化处为第一类型间断点;第二种是信号外观上较光滑,其幅值没有明显畸变,信号的一阶微分发生突变, 且一阶微分不连续, 称为第二类间断点。微分探测线圈得到的探测信号畸变(奇异)类型属于后一种。为方便起见,我们选取半个周期的探测信号进行分析,得到的信号存放在文件名为data112904.dat的数据文件中。利用笔者设计的界面对其进行分解和重构,选取与故障信号相适应的db10小波对其进行1(多分几个,要不显的太简单了)层分解,定位故障槽。结果如图3示,发现其故障槽为3槽。可不可以用汉语显示程序中使用的db10小波属于Daubechies小波系,是紧支撑正交小波,没有明确的表达式,但转换系数的平方模明确。假设:4结论本文采用了基于COM的MATLAB与VC+混合编程方法实现对MATLAB一维小波分解、系数提取以及信号重构函数的调用。并用实例说明如何在脱离MATLAB运行环境的情况下,方便地运行该系统对一维信号进行小波多尺度分解与重构。另外,为了满足某些特殊需求,该系统还提供了默认方式,选择该方式系统可以给出一维信号的原始波形和该信号10层小波分解的各层提取系数、各层系数重构和小波分解结构。实践证明,作为MathWorks公司力推的混编工具,COM Builder给VC调用MATLAB带来了极大的便利,这种方法不仅实现了VC的可视化界面与MATLAB强大的数值分析和图形显示能力的有效结合,而且可以完全脱离MATLAB环境运行,有效节省了系统资源,缩短了软件开发周期。参考文献1 郑淦,曹达仲. MATLAB与C_(+)混合编程及在通信仿真中应用.电子测量技术,2004年第1期:40-412 孙海峰,张晓林. MATLAB C共享库在测控分析系统开发中的应用. 电子测量技术,2006年第5期:156-1573 黄琦志,黄琦兰,郝建生.小波分析在某种压力波形中应用J. 电子测量技术,2003第6期:16-174 刘晓俭,邹进贵,熊川.基于MATLAB COM 组件的变形监测与分析软件开发J.地理空间信息.2007年6 月第5卷第3期:96-995 张涛,永健,禹兴华. 基于小波分析的BIT虚警抑制方法研究J. 电子测量技术,2007第8期:44-47.6 程正兴.小波分析算法与应用M.西安:西安交通大学出版社,1997.7 美崔锦泰.小波分析导论M.程正兴译.西安:西安交通大学出版社,1994.8 王大凯 彭进业.小波分析及其在信号处理中的应用M.北京:电子工业出版社,2006.作者

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论