五支点双曲肘合模机构优化设计中Matlab COMBuilder与VC混合编程的应用
- 格式:docx
- 大小:36.77 KB
- 文档页数:2
科学技术与工程6卷C++Builder与Matlab混合编程的两种方法杜高鹏翟正军1*徐隽(西北工业大学软件学院,西安710065;dgp_2003@126.com;西北工业大学计算机学院1,西安710072)摘要详细论述了C++Builder与Matlab混合编程的两种实现方法。
一是在C++Builder中使用COM技术调用Matlab数据。
二是脱离Matlab环境,通过动态连接库方式实现对Matlab工具箱函数的调用。
分别给出一个详细的例子。
这两种方法都充分发挥了C++Builder与Matlab的优势,为科学研究和工程技术提供了更强的技术支持。
关键词C++BuilderMatlabCOM组件Mediva软件平台DLL中图法分类号TP312文献标识码BMatlab是一个高度集成的系统,它把数值计算和可视化环境集成到一起,非常直观,而且提供了大量的函数,使其越来越受到人们的喜爱。
它集科学计算、图象处理、声音处理于一体,具有极高的编程效率。
近年来,Matlab已经从最初的“矩阵实验室”渗透到科学与工程计算的多个领域,在自动控制、信号处理、神经网络、模糊逻辑、小波分析等多个方向,都有着广泛的应用。
BorlandC++Builder是一种新颖的可视化编程语言,它既具有C++语言的灵活性、高效性,又具有可视化编程的便利性,功能丰富强大,界面友好,使用十分方便,但是在矩阵运算、数值分析、工程计算等方面,功能则稍嫌不足;在工程应用中,我们一般用C++Builder语言编写应用程序,实现交互界面、数据采集和端口操作等,但C++Builder在数值处理分析和算法工具等方面,其效率远远低于Matlab语言。
在准确方便地绘制数据图形方面,Matlab语言更具有无可比拟的优势。
此外,Matlab还提供功能强大的工具箱。
但Matlab的缺点是不能实现端口操作和实时控制。
因此,若能将两者结合运用,实现优势互补,将大大提高工作效率。
基于COM接口的VC++与MATLAB混合编程摘要介绍了VC++与Matlab混合编程的各种方法,并分析了各种方法的优缺点。
以FFT算法为例,给出了基于COM接口的VC++与Matlab混合编程的步骤。
关键词 VC;COM;Matlab;FFT;混合编程0 引言目前,Matlab广泛的应用于自动控制、数学运算、信号分析、图像处理、财务分析等各行各业。
MATLAB也存在着某些缺点:Matlab是一种解释性语言,其特点是以矩阵为基本数据结构,导致其执行效率相对C或C+ +语言要低很多;因为Matlab程序不能脱离其环境运行,故不能直接用于商用软件的开发。
与此相反,VC++由于其丰富得人机界面,高效的执行效率已经成为基于Windows平台下开发商业软件的必备工具。
然而,VC++对于复杂的数值运算就有点“力不从心”了。
所以将VC++与Matlab完美的结合,发挥各自的优势具有现实意义。
自Matlab6.5版本开始,新推出来的Combuilder支持把用Matlab编写的程序做成com组件,供其他语言调用。
该方法实现简单,通用性强,成为VC与Matlab混合编程最有效的方法。
1 VC与Matlab混合编程的方法1.1 通过Matlab Engine方式Matlab Engine是指一组Matlab提供的接口函数,支持C语言, Matlab Engine采用C/S(客户机/服务器)模式,Matlab作为后台服务器,而C程序作为前台客户机,通过Windows的动态控件与服务器通信,向Matlab Engine传递命令和数据信息,从Matlab Engine接受数据信息。
用户可以在前台应用程序中调用这些接口函数,实现对Matlab Engine的控制。
采用这种方法几乎能利用Matlab全部功能,但是需要在机器上安装Matlab软件,而且执行效率低,因此在实际应用中不采用这种方法,在软件开发中也不可行,这种模式只适合个人使用或做演示。
COM 是component object module 的简称,它是一种通用的对象接口,任何语言只要按照这种接口标准,就可以实现调用它。
matlab6.5 新推出来的combuilder 就是把用matlab 编写的程序做成com 组件,供其他语言调用。
该方法实现简单,通用性强,而且几乎可以使用Matlab 的任何函数(注意:不支持脚本文件,脚本文件使用时要改为函数文件),因此在程序较大、调用工具箱函数或调用函数较多时推荐使用,这也是Matlab 公司(Matlab 公司就是Mathworks公司)推荐的使用方法。
COM(Compponent ObjectModel 组件对象模型)是一项比较复杂的技术,详细讲的话几本书也讲不完,所以在这里不作介绍,本文通过一个例子详细介绍如何在matlab 下做COM 组件,以及如何在VC 中调用COM 组件。
首先在Matlab 编辑器里编辑m 函数文件:启动matlab->File->New->M-file 函数内容如图1:该函数无输入输出参数,文件保存为huatu.m。
function huatu()x=-10:0.1:10;y=sin(x);plot(x,y);在matlab 下建立COM 组件,步骤如下:1、在matlab command window 输入如下命令:>> deploytool出现以下界面:2、新建工程:File->New Deployment Project;弹出选择对话框如下图3、左侧选择Matlab Builder NE,右侧选择Generic COM Component;4、Name中输入工程名(比如hello4.prj);单击OK;出现下面界面5、右击hello4选择rename class可以改为合适的类名(比如huatu,这里没改);6、右击hello4class选择add file添加huatu.m文件(必须是函数文件);添加后如下图7、点击Tools->Build。
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。
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++数学库。
基于com组件的VC和MATLAB混合编程一、MATLAB 下做COM组件由于MATLAB 的编译器只能对函数M文件进行编译, 所以如果原来的程序是脚本程序应改写成函数形式。
同一个M文件还可以包含多个函数, 此时将出现在文件中的第一个M函数称为主函数, 其余的函数称为子函数, M函数文件的名称一般与主函数的名称保持一致, 其它函数都必须按照函数的基本结构来书写, 例如建立一个M函数文件function [a]=msadd(x,y)a=x+y;保存文件名为msadd.m在MA TLAB 命令行中输入deploytool命令启动MATLAB Com Builder 图形用户界面, 在其文件菜单中选择File- >New Project点击最左上角新建一个工程:注意:工程保存路径最好在硬盘一级目录下,工程名尽量简单,不要超过8个字母。
新建一个M3add的工程在D盘下系统生成一个M3add.prj的文件和一个名为M3add的文件夹工程建好后,系统自动生成一个与工程名相同的类,下图中为M3add的文件夹,这个文件夹经编译后,导入VC就是一个类,注意:这里要把与工程名相同的类删除再增加一个不同名的类,或改名,总之工程名与类名不能相同,否则导入VC后,最后编译时会报错,overload 之类的。
这里新增加了一个M4add类,在这个类下面增加m函数文件。
注意:如果是神经网络,则只能是训练好的神经网络。
函数中最好不要用图形显示的语句。
图形显示和VC的交互更加复杂,这里暂不讨论。
然后编译:编译完成后,关闭Matlab。
Matlab的工作到此完成。
二、设置VC++1、准备文件:(1)如果未曾对mwcomutil.dll 进行过注册, 在系统开始->运行中输入cmd,则进入DOS 在Dos状态下输入regsvr32 mwcomutil.dll对其进行注册,mwcomutil.dll在<MA TLAB 目录>/bin/win32 下。
五支点双曲肘合模机构优化设计中Matlab COMBuilder与
VC混合编程的应用
赵俊;杨于光
【期刊名称】《橡塑技术与装备》
【年(卷),期】2011(37)12
【摘要】双曲肘合模机构的设计变量和约束条件繁多,必须应用Matlab等数学软
件来处理优化计算过程。
在五支点合模机构优化设计中利用VC调用Matlab进行优化设计将使工程设计人员节省大量的时间和资源,能把更多有限的时间用在创新
型的设计上。
用VC++来做应用程序的界面,而用Matlab来实现优化程序的功能。
【总页数】4页(P59-62)
【关键词】合模机构;优化设计;Matlab;VC++;混合编程
【作者】赵俊;杨于光
【作者单位】北京化工大学
【正文语种】中文
【中图分类】TQ320.5
【相关文献】
1.五铰链双曲肘注射机合模机构的优化设计 [J], 朱成实;葛铁军
2.基于MATLAB的注塑机五支铰斜排双曲肘合模系统优化设计 [J], 石绍伟;杜思莹;杜遥雪;徐百平
3.双曲肘五铰链内卷式合模机构的节能研究与优化设计 [J], 周宏伟
4.注塑机双曲肘斜排列七支点合模机构的设计研究 [J], 张友根
5.基于MATLAB软件GUI技术的双曲肘合模机构优化程序设计 [J], 申军伟因版权原因,仅展示原文概要,查看原文内容请购买。