Visual-C#与Matlab混合编程示例(含代码)_第1页
Visual-C#与Matlab混合编程示例(含代码)_第2页
Visual-C#与Matlab混合编程示例(含代码)_第3页
Visual-C#与Matlab混合编程示例(含代码)_第4页
Visual-C#与Matlab混合编程示例(含代码)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Visual C# 与 Matlab 混合编程由于 Visual C# 与 Matlab 混合编程的资料并不多, 本文通过一个 实例来阐述 Visual C# 与 Matlab 混合编程的方法。一、混合编程的 4 种方式通过从Matlab的*m文件中生成C语言版本的DLL在 Matlab 中写好 m 文件;使用Matlab的编译器,编译为C#能识别的DLL文件;建立C#工程,在工程中引用上一步生成的文件;C#调用Matlab工作区计算并返回结果主要使用 engOpen, engClose, engPutVariable, engEvalString, engGetVariable 函数进行操作

2、。大致过程如下 :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 );使用 Matlab DeployTool 生成 COM 组件单击菜单 New Deployment Project - MATLAB Builder NE -Generic COM Component添

3、加相应的 M 文件保存,编译新建C#工程,引用生成的DLL文件。使用 Matlab DeployTool 生成 .Net 组件单击菜单 New Deployment Project - MATLAB Builder NE- .Net Component添加相应的 M 文件保存,编译新建 C# 工程,引用生成的 DLL 文件。由于 Matlab 与 C# 的 数组有一定的差异,但传递参数时,要转换成 Matlab 的参数类型, 因此要加入以下两句。using MathWorks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;而且要添加

4、MWArray 这个 Reference ,一般安装完 MATLAB Builder NE 就 有 了 , 目 录 为 : /toolbox/dotnetbuilder/bin/win32/v2.0/MWArray.dll 。由于第四种方式用的最多,下面以第四种方式,阐述 Visual C# 与 Matlab 混合编程的过程。二、 Visual C# 与 Matlab 混合编程的过程一生成 .NET DLL 文件编写 Matlab M 函数function tsum = sumab(a, b)tsum = sum(a,b);将以上函数保存为 sumab.m 文件。2建立 Matlab 工程1单

5、击 File-New-Deployment Project 菜单,出现下面的窗体:d、Nev/ Deployment ProjectMATLAB CompilerJ.MATLAB Builder MEMATLAB 9 uilder JAamf te st_ccmbnnti&n_mdtl aLc.prjLo cdtian C :U s e rshzh D ocum e ntsM AT LAB8rawse*QK匚 ancel:输入工程名 test_combination_matlab_c ,选择 MATLAB Builder NE-.NET Component,然后点击 OK 按钮。2将sumab

6、.m文件加入工程,点击Deployment Tool窗体的 settings按钮,如下列图所示:Deployment Tool*i :x2i u B x 圈蛊te5t_combindtion_mdtkb_c.NET 匚omf _1 T 6st_corYibir*atiari_rn-atljb_cJ”F sumab.mLj Other files* L!H Generate Verboe OutputSetting.,在出现的窗体中,设置.NET Framework版本,其版本号一定要 与C#所用的版本号一致,否则,会出问题。3.编译matlab工程。点击Build按钮匡,编译工程。编译后,在工

7、程目录下的Distrib 子目录里生成 C#中使用的DLL文件test_combination_matlab_c.dll 。二在C#中调用matlab中的M函数1.引用matlab中生成的DLL文件。打开 Visual Studio,新建一个 Windows Application 类型的 C# 工程,笔者建的是Test项目。建好后,在Solution Explorer里,鼠 标右键单击 Refere nces-Add Refere nces-Browse,加入生成的 test_combi natio n_ matlab_c/Distrib/test_combi natio n_ matlab

8、_c.dll;重复操作,再加入 Matlab目录下的另一个dll文件, /toolbox/dot netbuilder/bi n/wi n32/v2.0/MWArray.dll。Form里面,加入三个Label,二个Textbox组件以及一个 Button 组件,如下列图所示:b1 Forml整数和;label2埶组和 labe14的命编写代码注意要引入 MWArray.dll 和 test_combination_matlab_c.dll名空间。代码如下:using System;using System.Collections.Generic;using System.ComponentM

9、odel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;/引入命名空间using MathWorks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;using test_combination_matlab_c;n amespace Testpublic partial class Form1 : Formpublic Form1()In itializeComp onen t();private void but

10、t on 1_Click(object sen der,Even tArgs e)Test_combi natio n_ matlab_csumob = newtest_comb in ati on _matlab_c.Test_comb in ati on _matlab_c();try/整数例如MWArraya = ( MWNumericArray) new int System. Con vert .ToI nt16(textBox1.Text) ;MWArrayb = ( MWNumericArray) new int System. Convert .ToInt16(textBox2.Text) ;MWNumericArray c = ( MWNumericArray)sumob.sumab(a, b); thisabel2.Text = c.ToString();/数组例如MWNumericArray aa = new int 2, 2 1,2 , 3, 4 ; MWNumericArray bb =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论