【发布时间】:2014-06-26 10:55:13
【问题描述】:
我在 MATLAB 中有一个编写 CSV 的脚本,该 CSV 由一个 c# 脚本读取,该脚本编写了一些我返回并在 MATLAB 中读取的 CSV。
有什么方法可以自动执行此操作,这样我就不必每次都手动调用 c# 代码了?
【问题讨论】:
-
C# 脚本到底是什么意思? .csx 文件?图书馆?可执行文件?还是别的什么?
我在 MATLAB 中有一个编写 CSV 的脚本,该 CSV 由一个 c# 脚本读取,该脚本编写了一些我返回并在 MATLAB 中读取的 CSV。
有什么方法可以自动执行此操作,这样我就不必每次都手动调用 c# 代码了?
【问题讨论】:
从 Matlab 调用 .net 非常容易。官方文档位于http://www.mathworks.co.uk/help/matlab/matlab_external/load-a-global-net-assembly.html 您应该知道,Matlab 是区分大小写的(即使在指定汇编路径时也是如此),并且它还限制了它可以跨边界来回传递的对象种类。
如果您将一个数组从 Matlab 传递到您的 C# dll 中,它将看起来是一个裸对象数组而不是一个数字数组。在 Matlab 中,您可能需要使用 char 和 cell 方法将字符串和数组转换回您期望的形式。
【讨论】:
回答标题问题,例如“是否可以从 MATLAB 调用 C# 函数”:是的,可以。 Mathworks 在其网站上的calling .NET assemblies from MATLAB 上提供了不错的文档。当然,有一些限制和一些尴尬的怪癖需要考虑,但基本上您可以从 MATLAB 创建 .NET 类的实例并与 .NET 应用程序交互。
要建议自动化此过程,您或许可以深入了解MATLAB COM Automation Service?
在此的扩展中:也可以调用MATLAB functions in a .NET application。反过来说,有点意思。这对于基本数据类型来说没有问题,但是当它获得更多进步时,它可以让您通过一些棘手的 COM 挑战。
【讨论】: