zoukankan      html  css  js  c++  java
  • matlab的m文件怎么集成到vs里?

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

  • 相关阅读:
    Javascript 与 c# 数据加密互通 DEC
    Auto.js 隐藏日志信息、定时器
    Auto.js 检测开启无障碍
    Auto.js 初学碰到的坑
    SmartAssembly 汉化说明
    espcms 表结构说明
    处理器调度
    进程死锁与避免
    并发程序设计
    Mysql性能调优
  • 原文地址:https://www.cnblogs.com/julia/p/2220317.html
Copyright © 2011-2022 走看看