matlab c# 编程,Visual-C#与Matlab混合编程示例(含代码)

《Visual-C#与Matlab混合编程示例(含代码)》由会员分享,可在线阅读,更多相关《Visual-C#与Matlab混合编程示例(含代码)(6页珍藏版)》请在人人文库网上搜索。

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

2、String,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. 使用 Matlab DeployTool生成 COM 组件1) 单击菜单 New Deployment Project - MATLA。

3、B Builder NE -Generic COM Component2) 添加相应的 M 文件3) 保存,编译4) 新建 C# 工程,引用生成的 DLL 文件。4. 使用 Matlab DeployTool生成 .Net 组件1) 单击菜单 New Deployment Project - MATLAB Builder NE - .Net Component2) 添加相应的 M 文件3) 保存,编译4) 新建 C# 工程,引用生成的 DLL 文件。由于 Matlab 与 C# 的数组有一定的差别,但传递参数时,要转换成 Matlab 的参数类型,因此要加入以下两句。using MathWor。

4、ks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;而且要添加MWArray这个Reference,一般安装完MATLABBuilderNE就有了,目录为:/toolbox/dotnetbuilder/bin/win32/v2.0/MWArray.dll。由于第四种方式用的最多,下面以第四种方式,阐述Visual C#与 Matlab 混合编程的过程。二、 Visual C# 与 Matlab 混合编程的过程(一)生成 .NET DLL 文件1. 编写 Matlab M函数function tsum = sumab(a, b)tsum。

5、 = sum(a,b);将以上函数保存为sumab.m文件。2建立 Matlab 工程1)单击 File-New-DeploymentProject 菜单,出现下面的窗体:输入工程名 test_combination_matlab_c,选择 MATLAB BuilderNE-.NET Component ,然后点击 OK 按钮。2)将 sumab.m 文件加入工程,点击 Deployment Tool 窗体的 settings 按钮,如下图所示:在出现的窗体中, 设置 .NET Framework 版本,其版本号一定要与 C# 所用的版本号一致 ,否则,会出问题。3编译matlab工程。点击B。

6、uild按钮,编译工程。编译后,在工程目录下的Distrib子目录里生成 C# 中使用的 DLL 文件 test_combination_matlab_c.dll。(二)在 C# 中调用 matlab 中的 M 函数1. 引用 matlab 中生成的 DLL 文件。打开 Visual Studio, 新建一个 Windows Application 类型的 C# 工程,笔者建的是 Test 项目。建好后,在 Solution Explorer 里,鼠标右键单击 References-Add References-Browse, 加入生成的test_combination_matlab_c/Di。

7、strib/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的命名空间。代码如下:using System;using System.Collections.Generic;using 。

8、System.ComponentModel;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;namespace TestpublicpartialclassForm1 :FormpublicForm1()InitializeComponent();privat。

9、evoid button1_Click(objectsender,EventArgs e)Test_combination_matlab_csumob = newtest_combination_matlab_c.Test_combination_matlab_ctry();/ 整数示例MWArray a = (MWNumericArray) new int System.Convert .ToInt16(textBox1.Text) ;MWArray b = (MWNumericArray) new int System.Convert .ToInt16(textBox2.Text) ;MW。

10、NumericArray c = ( MWNumericArray)sumob.sumab(a, b); this .label2.Text = c.ToString(); / 数组示例MWNumericArray aa =new int2, 2 1, 2 , 3, 4 ;MWNumericArray bb =new int2, 2 5, 6 , 7, 8 ;MWArray cc;cc = sumob.sumab(MWArray)aa, (MWArray)bb);this .label4.Text = cc.ToString();catch (System.FormatException) 3. 编译和运行程序。程序运行结果如下图所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值