高慧
摘要
MATLAB有优秀的数值计算和仿真分析能力,相应的C#作为一种面向对象设计语言,其数据处理和成像功能的实现相对困难,本论文结合实际实例,将MATLAB成功的嵌入到C#中,通过基于COM组件的混编技术,实现了基于遗传算法的数据处理和成像。
【关键词】MATLAB C# COM组件 数据成像
1概述
MATLAB是由美国MathWorks公司推出的一款数学软件,主要功能有算法开发、数据数据分析和可视化研究、数值计算等。其高效率的计算功能将用户从繁杂的数学运算中解脫,同时,其强大的图形图像处理能力、简易的编程语言以及友好的界面给用户更简便和快捷的体验。正因如此,在许多的工程领域和学科中,MATLAB成为了计算机辅助设计以及仿真研究的首选工具。
NET技术的核心是公共语言运行时(CLR)。CLR提供了一个应用程序接口(API),使得程序员能够调用一组例程功能,从程序实现的繁琐细节中脱身出来,不需考虑底层的源码和程序内部工作机制。VisualC#.NET是VisualStudio.NET软件开发包的重要组成部分,其中,C#编程语言具有面向对象的特征。C#给程序设计带来了新的功能和优势,逐渐成为开发界面应用程序。
MATLABCOMBuilder模 块 是 由MathWorks公司自MATLAB6.5开始,推荐于混合编程的一项技术。在工程应用中,上位机软件需要对采集样本进行极为复杂的科学运算,涉及到算法分析和设计,并需要反馈给工程师和用户可视化的图形界面。基于COM组件的混编技术,结合了MATLAB强大的科学运算能力,又发挥了VisualC#.NET用户应用程序界面设计和开发的优点,应用前景颇为广泛。
2 COM组件技术的具体实现
2.1前期准备
(1)环境部署。 安装VS2010,MATLAB,在MATLAB中,找到MCRInstallexe安装包并安装。
(2)数据分析。根据实际工程采样结果和期望值,设计相应的算法实现。并根据实际需求拟定数据成图方式和类别。
2.2生成COM组件
(1)在MATLAB中编写数据处理程序以及数据成图的M文件。
(2)在MATLAB中配置编译器,在MATLAB的命令窗口中,输入mbuild-setup,根据提示将编译器设置为相应版本。在MATLAB命令窗口中运行deploy,将MATLAB函数转变成NET的编译库,在NewProjectSettings窗口创建一个新的Project,键入组件名称和类名。将编写好的M文件加入新建的工程中,生成的最终的dll文件。
2.3 vs2010对COM组件进行调用
(1)在VS2010界面下的项目工程中右键单击,添加生成的dll文件引用。
(2)在C#.NET中创建包含COM组件中方法的类的实例。在MATLAB安装路径下的toolbox里找到MWArray.dll并添加。
(3)将MATLAB窗口嵌入到vs的winform中。分别使用到Windows操作系统中的4个API函数:FindWindoW、SetParent、SetWindowLong、MoveWindow.
3工程实例
3.1 MATLAB绘图程序
pcolor(zz);%绘制数据的二维颜色变化图
set(gca,ytick,[1:1:5])
axis([1 91 5l);
set(gca,YDir',reverse);
fm= findall(gcf,'type,uimenu);%找到标准菜单,句柄返回给fm。
ft= findall(gcf,type,uipushtool,-or,type,uitoggletool);%找到工具栏,句柄返回给ft。
st= findall( gef,‘To oltip,‘ZoomIn,-or‘To oltip,‘Zo omOut,‘-or,‘Tooltip,‘Rotate3D,‘or,‘Tooltip,‘Print Figure);
3.2 vs 2010嵌入的实现
IntPtr hChild;//子窗口句柄
IntPtr hParent;∥父窗口句柄
hParent= dll.FindWindow(null, this.Text);
hChild= dll.FindWindo、v(null, “Figurell”);
dll.SetParent(hChild, hParent);
dll.SetWindowLong(hChild, -16,369164288);
dll.MoveWindow(hChild,0,O,this.Width-324, this.Height, true);}
3.3效果图
图1为MATLAB窗口嵌入到vs2010窗口中的实例。用户可以方便的查看实际场地情况。
参考文献
[1]岳玉芳,尤忠生,张玉双.基于COM的VB与MATLAB混合编程[J].计算机工程与设计,2005 (01): 61-62.
[2]王昊亮,李刚.VisualC#程序设计教程[M].北京:清华大学出版社,2004.
[3]潘爱民.COM原理及应用[M].清华大学出版社,2003.