[转自:数理空间:http://hi.baidu.com/chinfs/blog/item/262a3d318b9c0512eac4afdb.html]
R2009b MATLAB 资源 论坛
目录 入门指南 1 MATLAB Builder for .NET是什么? 1 .NET Builder怎么工作? 1 创建COM组件 2 不支持的MATLAB数据类型 2 创建 .NET组件 2 步骤 2 Deployment Tool输出窗口的功能 2 使用命令行方式创建.NET组件 3 使用由MATLAB Builder for .NET创建的组件 3 Magic Square(幻方)样例 3 例子 3 用户向导 3 NWArray类库 3 由MATLAB Builder for .NET 创建COM组件 3 例程 3
入门指南 MATLAB Builder for .NET是什么? MATLAB Builder for .NET(也称为 .NET构建者)是MATLAB编译器的一个扩展。使用她打包MATLAB函数以便.NET程序使用。.NET程序可以使用任何CLS如C#、VB.NET等编写。当发布程序时,必须包含由.NET Builder创建的支持文件以及MCR(MATLAB组件运行时)。 .NET Builder怎么工作? .NET Builder转换MATLAB函数为封装MATLAB代码的.NET方法。每个.NET Builder组件包含一个或多个类。每个类提供一个M函数的接口。组件提供一个方法的集合。 .NET Builder提供强健的数据转换,索引器,还有数组格式的能力以维持MATLAB的灵活性。为支持MATLAB数据类型,.NET Builder提供MWArray 数据转换类。该类定义在 .NET Builder MWArray程序集。你得引用这个程序集以进行数据的转换。 .NET Builder 也提供自定义错误处理,这样源于MATLAB函数的错误可以像标准的托管异常一样被报告。错误描述包括特定的M代码参考,所以简化了调试过程。 注意所有M代码都要以函数的形式编译。 创建COM组件 你也能使用.NET Builder创建COM组件。 不支持的MATLAB数据类型 不支MATLAB对象数据类型,例如,时间序列对象,大多数无符号数字类型也不支持。 已知问题 在 MWNumericArray 或 MWLogicalArray 对象通过调用ToArray 方法返回的数据引用MATLAB稀疏数组格式可能是错误的或毁损的。此问题仅发生于 1.1版本的 .NET。 创建 .NET组件 在创建一个组件你需要写M代码(或使用已有的代码)然后创建一个工程(在MATLAB Builder for .NET)以封装M代码。本节描述如何使用Deployment工具创建.NET 组件。也可以使用mcc命令创建组件。 步骤 1, 写、测试、保存M代码; 2, 执行MATLAB命令:deploytool 出现Deployment工具对话框。 3, 创建一个新的工程。注意选择好项目:MATLAB Builder for .NET->.NET Component 4, 添加你要封装的M文件。 5, 设置building and packaging的属性。点击按钮Settings可以打开设置的对话框。 6, 保存工程 7, 构建组件。 8, 测试、编辑、重建组件,如果需要。 如果需要可以打包文件。发布和运行自解压文件在其他的开发平台或机器。 如果还没有设定好编译器,则被要求设置编译器。 Deployment Tool输出窗口的功能 当生成组件及之后时,该窗口出现在下方。在其窗口内点击右键弹出菜单可以使用更多的功能。例如选择文本,把选择的文本当成命令或文件名等。 使用命令行方式创建.NET组件 也可以使用mcc命令的方式来创建组件。Mcc是编译器。 此处略。 使用由MATLAB Builder for .NET创建的组件 1, 确保可以引用生成的DLL文件; 2, 在VS2008 等开发环境的项目中引用该DLL。通常涉及到数据转换,需要引用MWArray类库,在matlabroot\toolbox\dotnetbuilder\bin\win32. 3, 像普通的类一样实例化和调用对象的方法。要在本地.NET类型和MATLAB数组类型之间编排数据需要使用MWArray data conversion classes。 注意所对应的.NET版本。 Magic Square(幻方)样例
例子 创建一个M文件,如:myfun.m function [y1,y2]=myfun(x1,x2,x3) y1=x1; y2=x2+x3;
在Matlab中执行:deploytool 打开工具箱,添加上面的M文件myfun.m。可以设置相关的工程属性。如组件的名称(命名空间)。 生成:test.dll 在VS2008中新建一个项目,比如一个C#的控制台项目。然后引用这个test.dll。 using MathWorks.MATLAB.NET.Utility; using MathWorks.MATLAB.NET.Arrays;
static void Main(string[] args) { test.testclass t = new test.testclass(); MathWorks.MATLAB.NET.Arrays.MWArray[] x = t.myfun(2, 2, 3, 4); }
用户向导
NWArray类库
由MATLAB Builder for .NET 创建COM组件
================例子===========================================================
Matlab 版本是 2009b C# 集成开发环境:VS 2008
创建最简单的实现加法功能的M函数如下:add.m
function y=add(x1,x2) y=x1+x2;
保存好。
deploytool
注意选择类型为 .NET 程序集。然后添加M文件。
Build
引用生成的 add.dll。此外由于涉及数据转换,还要引用MWArray.dll
在VS2008中创建最简单的C#控制台程序。
using System; using System.Collections.Generic; using System.Linq; using System.Text;
using MathWorks.MATLAB.NET.Utility; using MathWorks.MATLAB.NET.Arrays;
namespace matlabtest { class Program { static void Main(string[] args) { add.addclass add1 = new add.addclass(); MWArray y = add1.add((MWArray)1, 2); Console.WriteLine ("结果是:{0}",y); Console.ReadKey(); } } }
生成发布版本。
到bin目录下,可以发现两个程序:
其中的 add.dll 和 matlabtest.exe ,发布时,这两个程序要一起发布
|
请发表评论