我在C#中感到宾至如归,我将设计一个控制台应用程序,它将从Web服务中获取一些数据。我想让一组科学家使用MatLab中的数据。实现这一目标的一种方法是将其存储在HDD上的文件中,然后将其内容加载到MatLab中。
但是,这让我想到了。 是否可以在MatLab中创建一个调用在C#中创建的EXE 的函数,以便我的科学朋友可以去:a = GetMeSomeData()
并使用服务的响应填充变量 a ? (当然,我会使用我的C#代码格式化数据,因此它适合MatLab的矩阵模型。)
在我开始研究之前,我已经完成了一些谷歌搜索,但我发现的大部分内容都是关于MatLab(2007)的旧版本,并且说了一些关于创建COM对象的内容。
答案 0 :(得分:5)
您可能需要查看此内容:Using .NET libraries in MATLAB。
那里有很多文档。
从NET.addAssembly
('path-to-dll)
开始,然后您似乎可以像在.NET中一样正常使用这些类。
答案 1 :(得分:3)
您可以轻松调用.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);
答案 2 :(得分:2)
要直接回答问题,您可以使用MATLAB中的system
命令或!
来执行外部过程。一旦它返回,您可以读取并解析MATLAB函数的输出。将所有内容全部包含在MATLAB .m文件中,并且您拥有在问题中描述的内容。
当然,您可以使用createClassFromWsdl
直接从MATLAB访问Web服务。正如其他人所指出的,NET.addAssembly
允许您直接从MATLAB导入和使用.net程序集,这可能比解析文本文件输出更清晰。