目录
入门指南 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 ,发布时,这两个程序要一起发布。