Visual-C#与Matlab混合编程示例(含代码).docx_第1页
Visual-C#与Matlab混合编程示例(含代码).docx_第2页
Visual-C#与Matlab混合编程示例(含代码).docx_第3页
Visual-C#与Matlab混合编程示例(含代码).docx_第4页
Visual-C#与Matlab混合编程示例(含代码).docx_第5页
免费预览已结束,剩余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, 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. 使用Matlab DeployTool生成COM组件1) 单击菜单New Deployment Project - MATLAB 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 MathWorks.MATLAB.NET.Arrays;using MathWorks.MATLAB.NET.Utility;而且要添加MWArray这个Reference,一般安装完MATLAB Builder NE就有了,目录为:/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 = sum(a,b);将以上函数保存为sumab.m 文件。2建立Matlab工程1)单击File-New-Deployment Project菜单,出现下面的窗体:输入工程名test_combination_matlab_c,选择MATLAB Builder NE-.NET Component,然后点击OK按钮。2)将sumab.m文件加入工程,点击Deployment Tool窗体的 settings按钮,如下图所示:在出现的窗体中,设置.NET Framework 版本,其版本号一定要与C#所用的版本号一致,否则,会出问题。3编译matlab工程。点击Build按钮,编译工程。编译后,在工程目录下的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/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的命名空间。代码如下:using System;using System.Collections.Generic;using 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 Test public partial class Form1 : Form public Form1() InitializeComponent(); private void button1_Click(object sender, EventArgs e) Test_combination_matlab_c sumob =new test_combination_matlab_c.Test_combination_matlab_c(); try /整数示例 MWArray a = (MWNumericArray)new int System.Convert.ToInt16(textBox1.Text) ; MWArray b = (MWNumericArray)new int System.Convert.ToInt16(textBox2.Text) ; MWNumericArray c = (MWNumericArray)sumob.sumab(a, b); this.label2.Text = c.ToString(); /数组示例 MWNumericArray aa = new int 2, 2 1, 2 , 3, 4 ; MWNumericArray bb = new int 2, 2 5, 6 , 7, 8

温馨提示

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

评论

0/150

提交评论