博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MATLAB Builder for .NET
阅读量:5782 次
发布时间:2019-06-18

本文共 2992 字,大约阅读时间需要 9 分钟。

[转自::]

目录
入门指南 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

b48411fb1258902e6c22eba2.jpg

注意选择类型为 .NET 程序集。然后添加M文件。

b0e8653f50bea8d455e723b7.jpg

Build

80ca99545bc04160d00906d4.jpg

引用生成的 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();
}
}
}

1d07b41f3acffecde2fe0b6c.jpg

生成发布版本。

到bin目录下,可以发现两个程序:

c3046a73f03c60248501b06f.jpg

其中的 add.dll 和 matlabtest.exe ,发布时,这两个程序要一起发布

转载地址:http://phcyx.baihongyu.com/

你可能感兴趣的文章
程序员常用的六大技术博客类
查看>>
Iceworks 2.8.0 发布,自定义你的 React 模板
查看>>
胖哥学SpringMVC:请求方式转换过滤器配置
查看>>
Kotlin 更加优雅的 Builder - 理解 with
查看>>
前端日拱一卒D6——字符编码与浏览器解析
查看>>
深入理解浏览器的缓存机制
查看>>
微软向Linux社区开放60000多项专利:对开源微软是认真的
查看>>
Hoshin Kanri在丰田的应用
查看>>
又拍云沈志华:如何打造一款安全的App
查看>>
克服大数据集群的挑战
查看>>
PostgreSQL并发控制(MVCC, 事务,事务隔离级别)
查看>>
12月19日一周一次【Python基础语法】
查看>>
DM***的第二阶段OSPF
查看>>
python socket编程
查看>>
20180702搭建青岛RAC记录
查看>>
安装部署TIDB分布式数据库
查看>>
Spring Security OAuth 实现OAuth 2.0 授权
查看>>
linux文件及简单命令学习
查看>>
dubbo源码分析-架构
查看>>
新 Terraform 提供商: Oracle OCI, Brightbox, RightScale
查看>>