如何在编译的 .NET 程序集中使用 Matlab 对象?

2024-03-15

我有一个基本的 Matlab 类,我想用 C# 实例化它。

classdef MyClass
    properties
        Value
    end

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

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

然后将其构建到 .DLL 文件中,并与关联的 Matlab 命名空间(MathWorks.MATLAB.NET.Arrays、MathWorks.MATLAB.NET.Utility)一起导入到 C# 项目中。

在 C# 方面,我尝试构建此类的实例:

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

在最后一行代码结束时,result.Length = 1 且 result[0] = null。我以某种方式期望以某种方式获得对新创建的 Matlab 对象的引用。我想知道,这可能吗?如果是的话,那么如何才能实现这一点呢?如果没有,有办法解决吗? (我基本上有一个用 C# 编写的 GUI 组件,我不想将其集成到 Matlab 中,而是相反)。


It is 在 .NET 程序集中使用 Matlab 类。 有多种解决方法:

  1. 将您的变量定义为global,并使用包装其方法的几个函数来访问它
  2. 将您的 Matlab 类作为结构体中字段的值返回。

这是 (1) 的代码片段:

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

function DisplayMyClass()
    global myClass;
    myClass.display();
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在编译的 .NET 程序集中使用 Matlab 对象? 的相关文章

随机推荐