2012-01-12 100 views
3

我有一个基本的Matlab类,我想在C#中实例化。如何在编译的.NET程序集中使用Matlab对象?

classdef MyClass 
    properties 
     Value 
    end 

    methods 
     function obj=MyClass(v) 
      obj.Value = v; 
     end 

     function display(obj) 
      disp(obj.Value); 
     end 
    end  
end 

这则建成一个.dll文件,并在C#项目与相关的Matlab的命名空间(MathWorks.MATLAB.NET.Arrays,MathWorks.MATLAB.NET.Utility)一起导入。

在C#侧,我试图建立因而这个类的一个实例:

 Untitled2.MLTestClass matlab = new Untitled2.MLTestClass(); 
     MWCharArray input = new MWCharArray("Initial");      
     MWArray[] result = matlab.MyClass(1, input); 

通过代码的最后一行的末尾,result.Length = 1,并导致[0] = NULL 。我不知何故以某种方式获得了对新创建的Matlab对象的引用。我想知道,这甚至有可能吗?如果是的话,那么如何实现呢?如果不是,是否有解决方法? (我基本上有一个用C#编写的GUI组件,我不想在Matlab中集成它,反而是相反)。

回答

2

这是not possible在.NET程序集内使用Matlab类。 有许多解决方法:

  1. 定义你的变量全球,并与几个功能包的方法
  2. 返回您的MATLAB类为结构字段的值,它的访问。

下面是一个代码片段(1):

function CreateMyClass(st) 
    global myClass; 
    myClass = MyClass(st); 
end 

function DisplayMyClass() 
    global myClass; 
    myClass.display(); 
end 
+0

感谢伟大的答案:)代码段和它本身已被证明是有见地的链接。 – filipcampeanu 2012-01-13 01:12:05

+0

@ andrey-rubshtein目前最好的做法是什么?我在matlab中有多个类(有多个方法),每个类都有一个演示脚本。我想为每个类生成一个.NET程序集。 – nabrugir 2015-09-10 22:38:45

相关问题