C#与MATLAB混编技术在数据处理和成像中的应用

2018-05-10 05:10高慧
电子技术与软件工程 2018年24期

高慧

摘要

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.