首页 VisualC#与Matlab混合编程示例含代码

VisualC#与Matlab混合编程示例含代码

举报
开通vip

VisualC#与Matlab混合编程示例含代码Visual-C#与Matlab混合编程示例(含代码)VisualC#与Matlab混合编程由于VisualC#与Matlab混合编程的资料并不多,本文通过一个实例来阐述VisualC#与Matlab混合编程的方法。一、混合编程的4种方式1.通过从Matlab的*.m文件中生成C语言版本的DLL1)在Matlab中写好m文件;2)使用Matlab的编译器,编译为C#能识别的DLL文件;3)建立C#工程,在工程中引用上一步生成的文件;2.C#调用Matlab工作区计算并返回结果主要使用engOpen,engClose...

VisualC#与Matlab混合编程示例含代码
Visual-C#与Matlab混合编程示例(含代码)VisualC#与Matlab混合编程由于VisualC#与Matlab混合编程的资料并不多,本文通过一个实例来阐述VisualC#与Matlab混合编程的方法。一、混合编程的4种方式1.通过从Matlab的*.m文件中生成C语言版本的DLL1)在Matlab中写好m文件;2)使用Matlab的编译器,编译为C#能识别的DLL文件;3)建立C#工程,在工程中引用上一步生成的文件;2.C#调用Matlab工作区计算并返回结果主要使用engOpen,engClose,engPutVariable,engEvalString,engGetVariable函数进行操作。大致过程如下:MatlabCSharp.engPutVariable(ep,"ml_a",mx_a);MatlabCSharp.engPutVariable(ep,"ml_b",mx_b);MatlabCSharp.engEvalString(ep,"ml_c=ml_a+ml_b;");mx_c=MatlabCSharp.engGetVariable(ep,"ml_c");3.使用MatlabDeployTool生成COM组件1)单击菜单NewDeploymentProject->MATLABBuilderNE->GenericCOMComponent2)添加相应的M文件3)保存,编译4)新建C#工程,引用生成的DLL文件。4.使用MatlabDeployTool生成.Net组件1)单击菜单NewDeploymentProject->MATLABBuilderNE->.NetComponent2)添加相应的M文件3)保存,编译4)新建C#工程,引用生成的DLL文件。由于Matlab与C#的数组有一定的差别,但传递参数时,要转换成Matlab的参数类型,因此要加入以下两句。usingMathWorks.MATLAB.NET.Arrays;usingMathWorks.MATLAB.NET.Utility;而且要添加MWArray这个Reference,一般安装完MATLABBuilderNE就有了,目录为:/toolbox/dotnetbuilder/bin/win32/v2.0/MWArray.dll。由于第四种方式用的最多,下面以第四种方式,阐述VisualC#与Matlab混合编程的过程。二、VisualC#与Matlab混合编程的过程(一)生成.NETDLL文件1.编写MatlabM函数function[tsum]=sumab(a,b)tsum=sum([a,b]);将以上函数保存为sumab.m文件。2.建立Matlab工程1)单击File->New->DeploymentProject菜单,出现下面的窗体:输入工程名test_combination_matlab_c,选择MATLABBuilderNE->.NETComponent,然后点击OK按钮。2)将sumab.m文件加入工程,点击DeploymentTool窗体的settings按钮,如下图所示:在出现的窗体中,设置.NETFramework版本,其版本号一定要与C#所用的版本号一致,否则,会出问题。3.编译matlab工程。点击Build按钮,编译工程。编译后,在工程目录下的Distrib子目录里生成C#中使用的DLL文件test_combination_matlab_c.dll。(二)在C#中调用matlab中的M函数1.引用matlab中生成的DLL文件。打开VisualStudio,新建一个WindowsApplication类型的C#工程,笔者建的是Test项目。建好后,在SolutionExplorer里,鼠标右键单击References->AddReferences->Browse,加入生成的test_combination_matlab_c/Distrib/test_combination_matlab_c.dll;重复操作,再加入Matlab目录下的另一个dll文件,/toolbox/dotnetbuilder/bin/win32/v2.0/MWArray.dll。Form里面,加入三个Label,二个Textbox组件以及一个Button组件,如下图所示:2.编写代码注意要引入MWArray.dll和test_combination_matlab_c.dll的命名空间。代码如下:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;//引入命名空间usingMathWorks.MATLAB.NET.Arrays;usingMathWorks.MATLAB.NET.Utility;usingtest_combination_matlab_c;namespaceTest{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Test_combination_matlab_csumob=newtest_combination_matlab_c.Test_combination_matlab_c();try{//整数示例MWArraya=(MWNumericArray)newint[]{System.Convert.ToInt16(textBox1.Text)};MWArrayb=(MWNumericArray)newint[]{System.Convert.ToInt16(textBox2.Text)};MWNumericArrayc=(MWNumericArray)sumob.sumab(a,b);this.label2.Text=c.ToString();//数组示例MWNumericArrayaa=newint[2,2]{{1,2},{3,4}};MWNumericArraybb=newint[2,2]{{5,6},{7,8}};MWArraycc;cc=sumob.sumab((MWArray)aa,(MWArray)bb);this.label4.Text=cc.ToString();}catch(System.FormatException){}}}}3.编译和运行程序。程序运行结果如下图所示:
本文档为【VisualC#与Matlab混合编程示例含代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
志宏
暂无简介~
格式:doc
大小:148KB
软件:Word
页数:0
分类:
上传时间:2021-06-08
浏览量:0