是否可以在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库。
那里有很多文档。
从 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 程序集,这可能比解析文本文件输出更干净。