VC与MATLAB混合编程用于压力容器焊缝缺陷检测
- 格式:pdf
- 大小:791.42 KB
- 文档页数:4
VC++与Matlab的混编在虚拟仪器中的实现与应用
吴莹;秦树人
【期刊名称】《中国测试》
【年(卷),期】2006(032)002
【摘要】分析了目前虚拟仪器的开发环境,以虚拟仪器的开发特点及应用为基础,对VC + +和Matlab相融合技术进行了研究,提出了一种利用MATLAB与VC + +混合编程构建虚拟仪器的技术,并以虚拟式数字滤波分析仪为例,实现了此技术在虚拟仪器中的应用,充分发挥了VC + +开发用户界面,发送控制信息的优越性,以及Matlab强大的信号处理功能.
【总页数】4页(P108-110,126)
【作者】吴莹;秦树人
【作者单位】重庆大学测试中心,重庆,400044;重庆大学测试中心,重庆,400044【正文语种】中文
【中图分类】TP311.52
【相关文献】
1.多线程VC++和Matlab混编在信号采集和处理中的应用 [J], 李宁;秦树人;吴莹
2.VC++调用Matlab实现斜拉桥可视化调索软件的方法及其应用 [J], 李明;张宇峰
3.应用MATLAB工具箱在VC++中实现神经网络的程序设计 [J], 李伯全;张捷
4.VC++与 MATLAB混合编程实现遗传算法在图像分割上的应用 [J], 易文周;刘
海燕;张超英;王强
5.VC++调用MATLAB实现的虚拟仪器 [J], 叶强;卫力;程林滨
因版权原因,仅展示原文概要,查看原文内容请购买。
MATLAB在无损检测与缺陷检测中的应用实践无损检测(Non-Destructive Testing, NDT)是一项非常重要的技术,用于检测材料或结构中的缺陷,而不破坏被检测物体的完整性。
NDT广泛应用于工程、航空航天、汽车、能源和医疗等领域。
近年来,随着计算机技术的进步,MATLAB成为无损检测与缺陷检测中的常用工具。
本文将介绍MATLAB在这一领域的应用实践。
首先,我们了解一下无损检测的基本原理。
无损检测技术主要通过探测、检测和诊断来检查材料或结构中的缺陷。
常用的NDT方法包括超声波检测、磁粉检测、X射线检测和涡流检测等。
每种方法都有其适用范围和限制。
在实际应用中,NDT 通常需要处理大量的数据,并进行数据分析和图像处理,这就是MATLAB所擅长的领域。
MATLAB提供了丰富的工具箱,包括信号处理、图像处理、统计分析以及机器学习等,这些工具能够满足无损检测与缺陷检测的需求。
例如,对于超声波检测,我们可以使用MATLAB的信号处理工具箱来分析回波信号。
通过傅里叶变换、滤波和波形分析等方法,可以提取出目标物体中的缺陷信息,实现检测和诊断。
同样地,对于磁粉检测和涡流检测,我们可以利用MATLAB的信号处理和图像处理工具箱进行数据分析,找出目标物体中的缺陷。
除了数据分析,MATLAB还具备数据可视化的能力,这对于无损检测与缺陷检测非常重要。
MATLAB提供了直观的图形界面,可以清晰地显示出检测结果,帮助用户快速分析和判断。
例如,我们可以使用MATLAB的图像处理工具箱对X射线图像进行增强和分割,将缺陷部分凸显出来。
此外,MATLAB还支持三维可视化,可以将检测结果以立体图的形式显示出来,帮助用户更好地理解和分析。
除了本身强大的功能,MATLAB还具有丰富的社区资源和开发支持。
在MATLAB官方网站上,我们可以找到大量的示例代码、教程和文档,这些资源对于初学者来说非常有帮助。
同时,MATLAB还有许多第三方工具箱和函数库可供使用,可以扩展其功能和应用领域。
第19卷 第2期Vo1.19 No.2北京电子科技学院学报Journal of Beijing Electronic Science and Technology Institule 2011年6月 Mar.2011基于Matlab 和VC++混合编程的障碍检测系统设计刘海波1 刘朋鑫21. 河南理工大学 电气工程与自动化学院,焦作 河南 454003;2.空军大连通信士官学校,大连 辽宁 116600Abstract: The paper studies the problem of obstacle detection for mobile robot in unknown environment, and proposes a method via combining image segmentation with stereo vision to detect obstacle, which can reduce the complexity of detection algorithm and detect the location and distance information of obstacle quickly and reliably. Detection system software based on hybrid programming of Matlab and VC++ isproposed, which combines image processing functions of Matlab and visualization of VC++. Experimental results demonstrate that the programming efficiency is improved and the software development cycle is shortened in developing obstacle detection system software.Keywords: Matlab;VC++;hybrid programming;obstacle detection摘要:本文主要研究移动机器人在环境未知情况下的障碍物检测问题,提出了一种图像分割和立体视觉相结合的方法进行检测,减小了检测算法的复杂度,并能快速可靠地检测出机器人行进前方障碍物的位置和距离信息;将VC++的可视化图形界面功能和MATLAB 的强大图像处理功能有机的结合起来,采用混合编程开发方法实现障碍物检测系统软件。
基于VC++与MATLAB混编的故障信号分析系统设计蔡莎莎;付胜【期刊名称】《微计算机信息》【年(卷),期】2011(027)011【摘要】本软件是以Visual C++6.0为开发平台,调用MATLAB引擎,利用MATLAB强大的数据分析、数值计算、信号分析、绘图显示能力及丰富的函数库,对采集信号进行时域分析、傅立叶分析及小波分析,并基于BP神经网络对机械设备进行故障诊断。
同时VC通过ADO与ACCESS数据库进行通信,将信号分析过程中产生的时域特征值、频域特征值、神经网络样本数据与测试数据及诊断结果存储到数据库中。
VC++、MATLAB、ACCESS三者相结合,发挥各自的优势,大大缩短了软件的开发周期,使程序代码得到简化,提高了系统的运行效率。
%This paper describes a mechanical-signal analysis system, based on Visual C ++6.0, calling MATLAB engine. This system makes Fourier analysis and wavelet analysis to time domain signa. Simultaneously, this system makes fault diagnosis based BP neural network. VC communicates with ACCESS database through ADO. The feature signals generated by the process of time domain, frequency domain analysis, sample datas, test datas and diagnostic results are stored in the database. Therefore, through combining the three to play their respective advantages., greatly reduces the software development cycle, so that the code has been simplified to improve the efficiency of the system.【总页数】3页(P68-70)【作者】蔡莎莎;付胜【作者单位】北京工业大学机械工程与应用电子技术学院;北京工业大学机械工程与应用电子技术学院【正文语种】中文【中图分类】TP312【相关文献】1.基于VC++和Matlab混编的DICOM医学图像分割实现 [J], 李明彩;朱玛;何楠2.用VC++ 6.0和MatLAB语言混编开发图像处理实验软件 [J], 李罗生;白立芬;李庆祥;黄成伟3.VC++与Matlab的混编在虚拟仪器中的实现与应用 [J], 吴莹;秦树人4.多线程VC++和Matlab混编在信号采集和处理中的应用 [J], 李宁;秦树人;吴莹5.基于Matlab与VC++混编技术的混杂系统预测控制及仿真 [J], 李秀改;高东杰因版权原因,仅展示原文概要,查看原文内容请购买。
VC与Matlab混合编程本⽂主要介绍VC与Matlab混合编程的两种⽅法,并详细介绍了VC向Matlab传递复杂数据:结构体的⽅法,有详细代码说明。
Matlab 主要⾯对科学计算、可视化以及交互式程序设计的⾼科技计算环境,但由于Matlab开发平台上开发的程序不能脱离Matlab运⾏环境,因⽽在处理⼀些实际应⽤问题时显得灵活性不⾜,⽽VC++则在⼀定程度上能够弥补这⼀漏洞,因此,将⼆者结合共⽤,各献其长,可以为科研⼯作和⼯程开发提供更为强⼤的技术⽀持。
Matlab作为控制系统设计的⼀种通⽤⼯具,它可以很⽅便的和VC进⾏连接。
⼀般⽽⾔,Matlab与VC混合编程的实现⽅法有很多种,这⾥主要介绍以下两种:1. VC调⽤Matlab Engine的⽅式:Matlab Engine是⼀组Matlab提供的接⼝函数,⽀持C/C++语⾔,Matlab Engine采⽤C/S(客户机/服务器)模式,Matlab作为后台服务器,⽽C/C++程序作为前台客户机,向Matlab Engine传递执⾏命令和数据信息,从Matlab Engine接收执⾏结果。
⽤户可以在前台应⽤程序中调⽤这些接⼝函数,实现对Matlab Engine的控制。
采⽤这种⽅法⼏乎能利⽤Matlab全部功能,但是需要在机器上安装Matlab软件,缺点是执⾏效率较低。
下⾯简单介绍下这种⽅式的实现步骤:1.1 API接⼝介绍先来介绍⼀组Matlab提供的引擎API接⼝:(仅作简单功能介绍,详细参数说明请参考Matlab帮助)Engine* engOpen(const char* startcmd)启动Matlab引擎int engClose(Engine* ep) 关闭Matlab引擎int engEvalString(Engine* ep, const char* string)执⾏Matlab表达式mxArray* engGetArray(Engine* ep, const char* name)获取⼀个变量数组的值int engPutArray(engine* ep, const mxArray* mp)设置⼀个变量数组的值int engPutVariable(Engine *ep, const char *name, const mxArray *pm)同上mxArray *engGetVariable(Engine *ep, const char *name)获取⼀个变量int engOutputBuffer(Engine* eP,char* p,int n)获取输出字符串1.2 VC环境配置要想在VC集成环境下调⽤Matlab引擎实现VC和Matlab的混合编程,⼀般需要经过以下⼏个必要的步骤:(以下以Matlab2008a和VS2005版本为例)(1)添加include路径:将“\extern\include”(在Matlab的安装路径下)路劲添加到VC编译器的include下(2)添加lib路径:将“\extern \lib\win32\microsoft” (在Matlab的安装路径下) 路径添加到VC编译器的lib下(3)加载lib:需要加载⾄少libmx.lib、libmat.lib、libeng.lib三个库(4)include头⽂件:在要使⽤ engine 函数的地⽅包含engine.h头⽂件1.3 引擎调⽤接下来就可以在VC中调⽤Matlab引擎了,简单的⽰例代码如下:#include "engine.h"#pragma comment(lib, "libeng.lib")#pragma comment(lib, "libmx.lib")#pragma comment(lib, "libmat.lib")void TestDeno(){Engine* pEng = NULL;if (!(pEng = engOpen(NULL))){printf("Open matlab enging fail!");return;}//call Engine plot A*sin(t)+B A=2 B=1mxArray *A = NULL;double init = 2;A = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy((void*) mxGetPr(A), (void*)&init, sizeof (double));engPutVariable(pEng, "A", A);init = 1;memcpy((void*) mxGetPr(A), (void*)&init, sizeof (double));engPutVariable(pEng, "B", A);mxDestroyArray(A);Sleep(3*60*1000);engEvalString(pEng, "t=0:0.2:7;plot(t,A*sin(t)+B);");if(NULL != pEng){engClose(pEng);}}⽰例代码通过VC调⽤Matlab引擎,绘制正弦曲线,相对简单,就不再详细解释,效图如下:2. VC调⽤Matlab DLL的⽅式DLL是⼀个可执⾏的⼆进制⽂件。
MATLAB论文-MATLAB与VC混合编程技术在数控机床动态特性监测分析中的应用专业:物理与电子技术学院08自动化学号:08118071姓名:张鹏1.MATLAB 简介1.1 MATLAB 概述MATLAB 最初是作为矩阵实验室(Matrix Labora2tory) 用来提供通往LINPACK 和EISPACK 矩阵软件包接口的。
后来,它逐渐发展成为通用科技计算和图视交互系统的程序语言,其数据的基本单元是矩阵。
它的指令表达与数学、工程中常用的习惯形式十分相似,从而使许多用C 或Fortran 实现起来十分复杂和费时的问题用MATLAB 就可以轻松地解决。
MAT2LAB 的典型应用包括:数学计算、算法研究、数据分析和计算结果可视化、建模与仿真等。
1.2 MATLAB 的特点MATLAB 有三大特点:一是功能强大。
主要包括数值计算和符号计算、计算结果和编程可视化、数学和文字统一处理、离线和在线计算。
二是界面友好,编程效率高。
MATLAB 是一种以矩阵为基本单元的可视化程序设计语言,语法结构简单,数据类型单一,指令表达与标准教科书的数学表达式相近。
三是开放性强。
MATLAB 有很好的可扩充性,可以把它当成一种更高级的语言去使用。
使用它很容易编写各种通用或专用应用程序。
1.3 MATLAB 的图像处理工具概述MATLAB6. 1(R12. 1) 提供了20 类图像处理函数,涵盖了图像处理的包括近期研究成果在内的几乎所有的技术方法,是学习和研究图像处理的人员难得的宝贵资料和加工工具箱。
这些函数按其功能可分为:图像显示;图像文件I/ O ;图像算术运算;几何变换;图像登记;像素值与统计;图像分析;图像增强;线性滤波;线性二元滤波设计;图像去模糊;图像变换;邻域与块处理; 灰度与二值图像的形态学运算;结构元素创建与处理;基于边缘的处理; 色彩映射表操作;色彩空间变换;图像类型与类型转换。
1.4 线性控制系统的分析1.控制系统的计算机辅助控制系统的计算机辅助技术是一门以计算机为工具进行的的控制系统设计分析的技术。
VC++与Matlab混合编程的研究与实现关键词: VC++,matlab,混合编[文章信息]作者: 朱立松帅亮安居白时间: 2004-10-07出处: 计算机与信息技术责任编辑: 方舟[文章导读]在分析Visual C++和Matlab各自特点的基础上,提出混合编程的几种方法,分析对比各种方案的优缺点VC++与Matlab混合编程的研究与实现摘要在分析Visual C++和Matlab各自特点的基础上,提出混合编程的几种方法,分析对比各种方案的优缺点。
并结合实例介绍比较简便实用的Matcom混合编程方案,该方案不仅能转化成C/C++函数,而且可以支持图形函数功能。
可以为科学研究和工程技术提供更强的技术支持。
关键词 Visual C++; Matlab; Matcom; 混合编程Matlab是Mathworks公司推出的数学软件,它将数值分析、矩阵计算、信号处理和图形显示结合在一起,包含大量高度集成的函数可供调用,命令语句功能十分强大,为科学研究、工程设计及众多学科领域提供了一种简洁、高效的编程工具。
但是Matlab使用的是解释性语言,大大限制了它的执行速度;源代码的公开不利于算法和数据的保密;局限于Matlab运行环境而不能用于开发商用软件。
Visual C++是Windows平台下主要的应用程序开发环境之一,它能方便实现软件开发,开发的系统具有界面友好、执行速度快、易维护和升级等优点。
但是在工程计算方面,和Matlab相比编程显得复杂的多。
因此实现VC与Matlab混合编程,使两者结合起来,协同工作,必将提高软件开发效率,使所开发的软件具有更高的性能,更大的应用范围,也可以为科学研究和工程技术提供更强的技术支持。
VC与Matlab混合编程的实现方案在VC环境中调用Matlab程序主要有以下几种方法:(1)用Matlab引擎,采用客户机/服务器(Client/Server)的计算模式。
在VC中设计程序框架,作为前端客户机,通过调用Matlab引擎与后台Matlab服务器建立连接,实现命令和数据信息的传递。
VC和Matlab混合编程画图实践2013-03-14【摘要】在DSP软件开发中,基于代码的可移植性的需要,首先要基于VC平台开发出纯C定点版本。
为了对定点代码的精度和性能进行充分测试,需要对其进行定点仿真并与浮点的性能比较。
浮点代码的性能可以很容易的通过Matlab仿真得到,但由于VC与Matlab对仿真结果的保存形式不同,比对结果的过程需要人为完成。
并且VC对定点仿真的结果保存为文本形式,不够直观。
当仿真或测试条目较多时,这一过程将变得重复而繁琐,因此为了将这一过程变得更自动化、更直观,本实践介绍了一种利用VC调用Matlab动态链接库的方法,通过VC直接调用Matlab的方法进行画图,能够更直观、更方便的分析定浮点仿真结果的差异。
【关键词】Matlab Engine动态链接库VC定点仿真Matlab画图一、问题的提出在VC平台软件开发中,需要对实现的定点代码进行定点仿真,观测最后的BER曲线,并与浮点的结果做对比,观察其性能差异。
然而,VC平台的仿真结果只是保存在数组中的结果,不能直观的展示给测试人员,仍需人为的提取分析,这样便造成重复劳动和时间上的浪费,因此需要寻找一种简单易行的方法,实现将VC的仿真结果画图呈现出来。
二、解决思路Matlab作为数据仿真分析的工具十分强大,其包含了非常丰富的数学运算库和与外部工具的接口,众所周知,利用Matlab画图是十分方便的,只需将仿真结果,外加画图的参数传递给Matlab的命令函数,就能非常方便的完成画图,简单易行。
Matlab与VC的接口方式有很多种,如引擎的形式,COM 组件的形式,动态链接库的形式等等,因为动态链接库的形式在之前的实践中已经研究过,并且相对成熟,因此本实践将着重介绍将Matlab的函数编译成动态链接库供VC调用方法,对于引擎的和其他方式略做简单介绍。
三、实践情况3.1 工具与环境准备1)Matlab环境准备:本实践中采用的Matlab版本为R2011b。
浅析VC与matlab接口编程(一)作者:孙科QQ:44760299邮箱:c_dinco@Matcom是mathTools公司推出的一个能将M文件转化成相同功能C++代码的工具。
相比Matlab自带的编译器Compiler,用Matcom转化代码要简单和方便得多。
本文将结合作者编程经验,以VC6.0和Matcom为例,详细介绍如何利用Matcom进行VC与Matlab的联合编程。
Matcom安装安装Matcom前要已求安装VC6.0。
在安装过程中出现选择编译器对话框,选择“是”(图一)。
出现选择是否安装Matlab时,选“否”。
其他选项采用默认设置。
Matcom可以独立于Matlab运行,但需要外部的C++编译器,指定Matlab的位置是为了让编译文件中需要的一些系统函数找到路径用的。
图一安装完成后,启动界面MIDEVA(图二)。
MIDEVA集成开发环境包括命令行窗口、变量列表窗口、命令列表窗口和编译链接信息窗口等几部分,并有详细的帮助文档。
图二Matcom命令输入方法与Matlab相同。
如果安装在中文版操作系统时,输入命令前加一空格。
(如图三)。
图三下面详细介绍如何将m文件编译后放入VC中。
1、启动MIDEVA ,File->New,新建如下Test1.m文件:x=1:0.1:10; y=sin(x); plot(x,y);将文件保存(如图四)。
图四m文件保存的默认位置为:matcom安装目录\matcom45,生成的C++文件保存的默认位置为:matcom安装目录\matcom45\Debug\,本例matcom安装目录为C盘即 C:\matcom45\Debug\,在该目录下将会产生Test1.h、Test1.cpp、Test1.r 、Test1.obj文件。
2、在VC中用MFC Wizard(exe)创建一个基于对话框名为Example的工程。
在面板上添加一个ID为IDC_BUTTON1按扭。
matlab与vc混编matlab与vc混编-概述篇--转贴自pris学术论坛第一章、详述...第一章、概述matlab就是当今世界上采用最为广为的数学软件,它具备相当强悍的数值排序、数据处理、系统分析、图形表明,甚至符号运算功能,就是一个完备的数学平台,在这个平台上,你只需寥寥数语就可以顺利完成十分复杂的功能,大大提高了工程分析排序的效率。
另外由于matlab的广为采用,于是发生了向各个领域专门采用的工具箱(即为在某一研究领域常用数学工具的函数纸盒),这些工具箱的发生更加推动了matlab的盛行。
matlab强大的功能只能在它所提供的平台上才能使用,也就是说,你必需在安装有matlab系统的机器上采用.m文件,这样就给工程排序增添了非常大不便;特别就是,在matlab中,并使用的行解释方式执行代码,这样大大地限制了代码执行速度。
于是人们想到,能否开发一个matlab与其他高级语言的USB,这样就可以把matlab的强悍功能带入各种应用程序中,并且通过高级语言编译器编译为2进制代码,从而大大提高了执行速度。
1.用matlab的mcc将.m文件翻译为cpp源文件,然后在c编译器中调用也可以用mcc编程编程为stand-alone程序。
是我最喜欢用的方法。
方法1和2/3各有利弊,1不积极支持图形(积极支持图形的库国内现在还没d),1对类积极支持也比较,2积极支持绝大多数的matlab语句(包含图形),但对于struct等的积极支持也有缺陷。
vc++中使用matlab的c++数学库和mcc生成的程序0、概述matlab5.3的提供了c/c++数学库,其中的c++数学库功能很强,使用它可以用类似matlab的语法编写c++程序,十分方便。
虽然速度上仍然比手工c/c++程序慢,但是由此换来的高效的开发效率和可靠性往往是值得的。
另外mcc命令可以将m文件转化为c或cpp文件,编译后可以脱离matlab运行,它们也是使用的c/c++数学库。
MATCOM在VC++与MATLAB混合编程中的应用摘要:介绍了使用MATCOM实现VC++与MATLAB混合编程的优势和方法,并给出了实例。
关键词:MATCOM、MATLAB、混合编程引言MATLAB是MathWorks公司于1982年推出的一种以矩阵为基本运算单位的高效数值计算软件,带有功能强大的数学函数库,并开发有多种学科领域的工具箱函数库,广泛地应用于科学研究与工程计算。
然而,MATLAB自身存在的一些缺点限制了它在更多方面的应用:(1)MATLAB程序不能脱离其运行环境,可移植性差(2)MATLAB是一种解释性语言,语言执行效率低,实时性较差(3)MATLAB的界面开发能力较差,难以开发出友好的应用界面(4)MATLAB编写的M文件是文本文件,容易被直接读取,难以保护劳动者的成果VC++用于面向对象的可视化编程,可以完成从底层软件直到面向用户软件等各种应用程序的开发。
利用它提供的各种实用工具,开发者可以轻松开发出高效强大的Windows应用程序。
但在实际工程开发中,与MATLAB相比:(1) VC++在数值处理分析和算法工具等方面不如MATLAB(2) VC++在准确方便地绘制数据图形(数据可视化)方面不如MATLAB因此,把MATLAB在数值计算、算法设计以及数据可视化等领域的优势与VC++应用系统集成,不仅可以完全满足系统在数据运算与表现方面的需求,而且还可提高系统处理的效率和稳定性,同时也减少了开发人员实现算法的困难,缩短了软件开发的周期,提高了软件质量,在实践中具有很高的使用价值。
VC++与MATLAB混合编程方法在VC++下调用MATLAB,主要有以下三种方法:1) 利用MATLAB引擎MATLAB Engine库是MathWorks公司提供的一组函数库,它提供了一种在用户程序进程中与独立的MATLAB进程通讯的方法,在Windows下使用ActiveX技术实现。
MATLAB Engine不仅可以调用MATLAB中的C\C++函数,还可以调用工具箱中的函数,应用程序整体性能较好,同时,MATLAB Engine方式可利用MATLAB强大的图形功能;但该种方式的致命缺陷是不能脱离MATLAB运行环境。
MATLAB 与 VC 混合编程SCIE摘要:MATLAB 提供了很丰富的编程接口,可以通过这些接口使用其它语言来编写模块集成到 MATLAB 程序中,也可以在其它程序设计语言中调用 MATLAB 。
尽管如此,在某些情况下可能仍然不能满足某些特殊的要求, 本文从实际应用出发, 介绍了 MATLAB 与 VC 混合编程的一些方法。
需要特别说明的是:本文内容是针对MATLAB6.5和 VC6.0的,并不适应于其它版本的 MATLAB 。
关键词:混合编程 MATLAB VC 窗口嵌入一、 VC中使用编译得到的 C++源程序文件通过 MATLAB 的编译器我们可以将 m 代码编译为独立的可执行程序,从而达到脱离 MATLAB 、在未安装 MATLAB 的计算机上发布的目的。
但是这样做仍然不能满足如下要求: MATLAB设计的图形用户界面功能还不够强大,不支持表格、目录树以及分组单选按钮等控件;当在一个 GUI 中放置过多的控件时,速度会比较慢。
整个软件并不是以 MATLAB 为主开发的,需要把 MATLAB 编写的代码融合到软件主体中,而不是生成独立的程序。
需要修改 MALTAB 编译器自动生成的代码, 或在其中添加代码以实现特定的功能。
将 m 文件编译生成 C 或者 C ++代码,在 VC 中使用这些代码,就可以解决以上几个或者更多的问题。
在此之前,需要对 VC 的开发环境进行设置,添加MATLAB 的 Include 目录和 Library 目录,操作如下:启动 VC ,点击菜单 Tools-Options ,出现如下对话框:图表 1设置 Include 目录¾在 Show directories for下方的下拉框中选择 Include files,在 Directories 下方列表框的空白一行或者单击 Directories 右方的左起第一个按钮, 添加如下两个目录: $matlabroot\extern\include\cpp$matlabroot\extern\include¾在 Show directories for下方的下拉框中选择 Include files,在 Directories 下方列表框的空白一行或者单击 Directories 右方的左起第一个按钮, 添加如下两个目录: $matlabroot\extern\include\cpp$matlabroot\extern\include其中 $matlabroot为 MATLAB 的安装目录,如图表 2所示。
·70·计算机与信息技术 经验与交流 VC++与MATLAB混合编程及其应用景征骏1,2 许家民 1(1.河海大学 机电工程学院,江苏 常州 213022; 2.江苏技术师范学院 计算机系,江苏 常州 213001)摘要本文详述了在VC++6.0编译环境下如何利用Matlab来实现应用系统的设计和分析,介绍了通过Matlab与VC 应用程序连接的常用方法,分析了VC与Matlab的混合编程的步骤,最后通过一个具体实例的实现过程对上述方法进行了应用性介绍。
关键词VC++;Matlab;混合编程Matlab 是由Math Works 公司于1984 年推出的数值计算及图形处理软件,可以实现数值分析、优化、统计、偏微分方程数值解、自动控制、信号处理、图像处理等若干领域的计算和图形显示功能。
其中,控制系统工具箱的集成为设计和分析各种复杂的控制系统提供了有效的方法和途径[1]。
但是,由于Matlab开发平台的局限性,在其上面开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,现将二者结合共用,各献其长,可以为科研工作和工程开发提供了更为强大的技术支持。
1 Matlab与VC混合编程的实现方法Matlab作为控制系统设计的一种通用工具,它可以和VC 方便的进行连接。
一般而言,Matlab与VC混合编程的实现方法主要有以下三种方法:(1)通过引擎(Engine),采用客户机服务器的计算模式,通过Window的ActiveX通道和Matlab 进行连接。
具体应用时,往往在VC中设计程序框架,以编译的程序作为前端客户机;通过调用Matlab引擎在后台实现与服务器的连接,实现动态通信(2)应用Matlab数学函数库,Matlab中包含了内容丰富的函数库,而且还提供了与VC的数学函数接口,用户可以方便的在VC的IDE(集成开发环境)中调用。
实验技术与管理Experimental Technology and Management 第37卷第5期2020年5月Vol.37No.5May2020ISSN1002-4956CN11-2034/TDOI:10.16791/ki.sjg.2020.05.012基于C#与MATLAB混合编程的管道缺陷类型识别实验系统软件开发万勇',万莉2,戴永寿1(1.中国石油大学(华东)海洋与空间信息学院,山东青岛266580;2.中国石油大学(华东)后勤管理处,山东青岛266580)摘要:金属磁记忆技术是一种能够对油气管道腐蚀缺陷和应力集中缺陷进行检测的新型非接触式检测技术目前只能实现缺陷的检测,但是缺乏对缺陷类型识别的方法针对该问题,设计并开发了一套基于C#与MATLAB混合编程的管道缺陷类型识别软件,软件利用MATLAB进行数据处理、特征量计算及方法建模等工作,利用C#搭建面向用户的操作界面,发挥二者在软件开发上的独特优势,使用户能快速准确地实现数据特征量计算和缺陷判别实验等操作,关键词:混合编程;管道缺陷;C#;MATLAB中图分类号:TP271文献标识码:B文章编号:1002-4956(2020)05-0052-06Development of experimental system software of defect type detection for pipeline based on C#and MATLAB hybrid programmingWAN Yong1,WAN Li2,DAI Yongshou1(1.College of Ocean and Space Informatics,China University of Petroleum,Qingdao266580,China;2.Logistics Management Office,China University of Petroleum,Qingdao266580,China)Abstract:Metal magnetic memory detection technology is a new non-contact testing technology that can detectcorrosion defects and stress concentration defects of oil and gas pipeline.At present,there is only defects detectionmethod,but the type recognize method of defects is scarce.To solve this problem,a pipeline defect typerecognition software is designed and developed based on mixed programming of C#and MATLAB.The softwareuses MATLAB for data processing,feature quantities calculating and method modeling,and adopts C#to build auser-oriented operation interface,giving full play to the unique advantages of the two in software development andenabling users to quickly and accurately calculate the data feature quantities and,discriminate defects and otheroperations.Key words:hybrid programming;pipeline defect;C#;MATLAB油田的油气管道长期在复杂的环境下运行,会逐渐产生各种类型的缺陷,主要包括腐蚀缺陷和应力形变缺陷。
Matlab 作为当今世界上应用最为广泛的数学软件,具有非常强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算的功能。
已经在如生物工程,图像处理,语音处理,雷达探空,声纳探水,地震探地,以及控制论,系统论等各个领域得到广泛的应用。
它是一个完整的数学平台,在这个平台上,用户只需寥寥数语就可以完成十分复杂的功能,大大提高了工程分析计算、图像处理的效率。
但是Matlab 强大的功能只能在它所提供的平台上才能使用,即用户必须在安装Matlab 系统的机器上才能执行*.m 文件。
这样当用户需要将在Matlab 下已开发完毕的复杂算法应用到高级语言开发环境下时就带来了问题,是将现成的东西集成高级语言开发的程序中呢?还是用高级语言再重新实现一遍?显然大家所期望的是减少工作量,最好能将Matlab下开发好的程序或函数直接应用到高级语言开发的程序中,这就是Matlab与高级语言的混合编程问题。
VC++是当前Windows 下的主要编程语言之一,它能方便地形成应用软件中所需要的各种用户界面和工具并直接与系统及底层硬件交换数据。
用VC++开发的系统具有容易维护升级、界面友好、代码效率高、执行速度快等一系列优点,因此已成为目前应用软件开发中广泛采用的主要工具之一。
因此,如何将Matlab与VC++进行有效的混合编程广受工程科研人员的关注。
解决这个问题,不仅能更好地发挥Matlab 强大的功能,还能快速地进行软件开发,尤其是当软件开发中需要实现复杂的数学算法、图形处理时尤为迫切。
研究VC++与Matlab的混合编程具有很大的实际意义。
MATLAB 与Visual C++结合的方法有多种,但其实用程度与范围不同。
目前主要有以下三种方式。
1. 通过Matlab引擎(Engine)采用客户机/服务器(Client/Service)的计算模式,通过windows的ActiveX通道和MATLAB进行结合。
MATLAB引擎采用客户机和服务器计算方式,提供了一组Matlab API函数,用户不必关心Matlab引擎是如何实现的,只要调用这些函数即可。