3

是否有可能从 Visual Studio 获得一个可以调用 matlab 文件(代码)并运行它的界面。

我基本上想要一个 .exe 文件,它有来自 VS 的 GUI 和来自 matlab 的代码。谢谢

4

3 回答 3

2

如果您正在构建 GUI 并将其集成到文件中,则以下方法有效:您可以使用from.mex调用 matlab 函数或用户定义函数: mexCallMATLABmexCallMATLABmex.h

如果你在 C/C++ 中构建一个独立的程序(生成一个.exe文件),那么Matlab Engine你可以调用它来执行Matlab代码。看看这里阅读更多关于这个接口的Matlab 引擎。它基本上是一个 C 库,允许您调用Matlab.

于 2013-11-13T11:20:56.567 回答
1

我不确定你的问题是什么,但我仍然很确定答案是“否”。

如果您使用其中一种 Visual Studio 语言(例如 C#、VB.NET 等)构建了用户界面,并且希望该界面调用 matlab 脚本,那么我知道您有两个选项:

1) 从 Mathworks 购买 matlab .NET 接口。我不确定这是如何工作的,因为它要花很多钱,而我没有。

2)购买matlab编译器(这也需要很多钱)并将你的matlab代码“编译”成可执行文件。然后通过命令行从您选择的 .NET 语言中调用该可执行文件。这种方法的问题在于,将数据传递到 matlab 脚本的唯一方法是通过从命令行调用脚本。通常的解决方法是在命令行的调用中传递 txt 或 csv 文件的位置,然后让 matlab 脚本的第一部分专门用于从该 txt 或 csv 文件中检索数据。这种方法的另一个问题是,如果你想调用很多 matlab 脚本,它会花费你很长时间,因为每次你在后台调用一个“编译”的 matlab 脚本,您实际上是通过称为 matlab 编译器运行时的野兽创建所有 matlab 运行时库的新实例。这就是我说“已编译”的原因——因为它仍然在运行时解释,所以它并没有真正编译。

编辑

要使用 VB.NET 调用 matlab 脚本,您可以尝试:

    '#Get the matlab executable info
    Dim MatlabStartInfo As New ProcessStartInfo
    MatlabStartInfo.FileName = "cmd.exe"
    MatlabStartInfo.WindowStyle = ProcessWindowStyle.Maximized
    MatlabStartInfo.Arguments = "/C " & Chr(34) & Chr(34) _ 
    & "C:\Path\To\Matlab\Script\Matlab_Script.exe " & Chr(34) & " " & Chr(34) _
    & MatlabScriptInputArgument & Chr(34) & Chr(34)

    '#Run the matlab executable
    Using MatlabProcess As Process = New Process
        MatlabProcess.StartInfo = MatlabStartInfo
        MatlabProcess.Start()
        MatlabProcess.WaitForExit()
    End Using

其中 MatlabScriptInputArgument 是一个包含 matlab 函数参数的字符串(上面的代码假设只有一个输入)。

于 2012-09-19T08:33:40.287 回答
0

不是 Visual Studio,但有一个Visual Studio Code MatLab扩展

于 2016-02-08T22:35:50.523 回答