是否可以在MatLab中使用.NET应用程序

本文关键字:NET 应用程序 MatLab 是否 | 更新日期: 2023-09-27 17:55:24

我在 C# 中感到宾至如归,我将设计一个控制台应用程序,该应用程序将从 Web 服务获取一些数据。我想允许一组科学家使用MatLab中的数据。实现此目的的一种方法是将其存储在HDD上的文件中,然后将其内容加载到MatLab中。

不过,这让我思考。是否可以在 MatLab 中创建一个函数来调用用 C# 创建的 EXE,以便我的科学朋友可以去:

a = GetMeSomeData()

并用服务的响应填充变量 A?(当然,我会使用我的 C# 代码格式化数据,以便它适合 MatLab 的矩阵模型。

在我开始研究这个问题之前,我已经做了一些谷歌搜索,但我发现的大部分东西都是关于旧版本的 MatLab (2007),它说了一些关于创建 COM 对象的事情。

是否可以在MatLab中使用.NET应用程序

你可能想看看这个:在MATLAB中使用.NET库。

那里有很多文档。

NET.addAssembly ('path-to-dll) 开始,然后似乎您可以像在 .NET 中一样正常使用这些类。

您可能还想查看将数组与 .NET 应用程序配合使用。

可以轻松地调用 .NET 程序集中的函数。首先,你必须告诉 Matlab 你将使用什么汇编:

NET.addAssembly("path//to//assembly.dll");

之后,您只需在 m 文件中调用函数:

foo = Namespace.Class.FunctionFoo(input1, input2);
bar = Namespace.Class.FunctionBar(input1, input2);

您甚至可以有多个输出。如下所示的 C# 函数:

public void MultipleOut(int in1, int in2, out int out1, out int out2)
{ ... }

在 Matlab 中可以这样调用:

[out1, out2] = Namespace.Class.MultipleOut(in1, in2);

要直接回答这个问题,您可以使用 MATLAB 中的 system 命令或!来执行外部进程。返回后,您可以读取和解析 MATLAB 函数的输出。将所有这些内容包装在一个 MATLAB .m 文件中,您就有了您在问题中描述的内容。

当然,您可以使用 createClassFromWsdl 直接从 MATLAB 访问 Web 服务。正如其他人指出的那样,NET.addAssembly允许您直接从 MATLAB 导入和使用 .net 程序集,这可能比解析文本文件输出更干净。