|
摘 要:介绍一种通过MATLAB提供的Engine引擎及其类库实现Visual C++对MATLAB调用的方法,通过对二进制数据文件的数组转化,调用MATLAB对数据进行波形、频谱以及功率谱密度分析,同时提供了一些图形处理工具,以便用户更方便的进行数据分析。 关键词:虚拟仪器;vc++;Matlab1数据采集的结构和过程 MATLAB环境下的工具箱可以简化和加快数据的采集及处理工作。使用这种工具箱更容易将实验测量、数据分析和可视化的应用集合在一起。数据采集及处理工具箱提供了一整套的命令和函数,通过调用这些命令和函数,可以直接控制各种与PC机兼容的数据采集硬件设备的数据采集和通讯。因为数据采集工具箱集成于MATLAB之中,所以在进行数据采集的同时可以对采集的数据进行实时分析。一个典型的数据采集及处理过程如图1所示。 
MATLAB在后台环境中对数据数组进行处理,前台显示其采样的波形图、频谱图以及频谱密度图(模拟二维显示,也可以进行三维显示); 在MATLAB的后台环境中,通过调用MATLAB自带信号处理工具箱SPTOOL进行处理,并将数据转化为以.mat为后缀名的数据格式,以供MATLAB工具箱调用处理。 创建图形处理类对MATLAB生成的图形进行一定的处理,使其转化为.BMP格式的图形,并将其在VC++环境中进行显示,同时提供对图形进行移动、放缩、区域选择等处理的方法。 2软件设计模块分析 2.1初始化模块 本模块构建程序运行时的初始框架结构,通过VC++建立用户界面和图形初始界面。它大致包括以下几个方面的内容: 程序标题、程序图标的注册生成:系统工具栏、用户工具栏及状态栏的注册生成;菜单项的注册生成,其中包括快捷键和热键的设置;用户界面和图形界面的设计和创建。 2.2MATLAB引擎处理模块 C语言MATLAB引擎程序的建立: 在Windows操作系统上,C语言MATLAB引擎程序的建立极为简单。用户在编写好源程序后,只需在MATLAB命令体下键入命令mex并辅以参数-f和相应的选项文件以及需要编译的源程序名即可,格式如下: mex-f〈Matlab〉\bin\optsfilename.bat filename.c 其中optsfilename.bat为与用户系统中C语言编译器相对应的选项文件名,参数-f的含义为使用指定的选项文件对filename.c进行编译。若引擎编译成功,mex命令将不返回任何信息,直接回到MATLAB命令提示符下,否则将给出一定的错误原因。 2.3图形处理模块 本模块主要是关于图像的转化,图像的处理及相关对话框类的创建。它大致包括以下几个方面的内容: 
创建单视图窗口。对视图进行切分,左面部分为基于FormView的框架,右面部分为基于ScrollView的框架。前者用于用户交互界面,后者用于显示符合要求的图形。实现在VC++环境中二进制文件的读入,并转化数组进行存储。 完成在VC++环境中通过MATLAB提供的内部engine库函数实现对MATLAB的调用,使MATLAB在后台工作,对转化后的数据数组进行相应的处理; 创建关于设备独立位图的Dib类,提供设备相关位图和设备独立位图的相互转化、选定原始图形区域在选定视图区域内的显示以及图形文件读取转化等一系列功能的实现; 编写关于目标图形的偏移、放大、缩小、区域选择等处理方面的代码,以使读者能够更好的阅读图形的特征和理解总结图形的特性; 编写关于原始图形绘制时的区域选择和处理方面的代码实现,以使读者能够更好的阅读图形的特征和理解总结图形的特性。 2.4MATLAB生成的波形图 本模块主要是通过调用MATLAB提供的engine库完成对数据的波形、频谱、功率谱密度四个图形的生成,同时实现对MATLAB提供的功能强大的SPTOOL工具箱的运行调用,从而增强本程序的运用范围和分析的能力。 相关MATLAB函数调用:
 2.5应用示例 使用一个信号源产生音频信号和对其进行数据处理。数据采集和处理过程如下: 信号源产生的音频信号输入给A/D。 初始化:产生一模拟输入对象(AI) AI: analoginput(‘WinSound’) Start(A);开始采集数据 data=getdata(AI);获取数据 Delete(AI);结束采集数据 xfft=abs(fft(data));对采集的数据按要求进行FFT 经过MATLAB后台处理,在前台屏幕显示波形和频谱。如图3所示,此音频信号的基频为300Hz。 
3结论 MATLAB软件功能如此强大,只要做好VC与MATLAB的接口,把数据采集卡采集到的信号经过MATLAB后台处理,利用MATLAB的信号处理工具,就可以方便、快捷的在屏幕上显示所要的波形。
参考文献 [1] 刘志检,等.MATLAB应用程序接口用户指南[M].科学出版社,2002. [2] 黄文梅,熊桂林,杨勇.信号分析与处理——MATLAB语言及应用[M].国防科技大学出版社,2002. [3] 张志涌,等.精通MATLAB 5.3版[M].北京航空航天大学出版社,2000. [4] 骆长乐译.学用Visual C++6.0[M].清华大学出版社,1999. () |