是否有可能从 Visual Studio 获得一个可以调用 matlab 文件(代码)并运行它的界面。
我基本上想要一个 .exe 文件,它有来自 VS 的 GUI 和来自 matlab 的代码。谢谢
是否有可能从 Visual Studio 获得一个可以调用 matlab 文件(代码)并运行它的界面。
我基本上想要一个 .exe 文件,它有来自 VS 的 GUI 和来自 matlab 的代码。谢谢
如果您正在构建 GUI 并将其集成到文件中,则以下方法有效:您可以使用from.mex
调用 matlab 函数或用户定义函数:
mexCallMATLABmexCallMATLAB
mex.h
如果你在 C/C++ 中构建一个独立的程序(生成一个.exe
文件),那么Matlab Engine
你可以调用它来执行Matlab
代码。看看这里阅读更多关于这个接口的Matlab 引擎。它基本上是一个 C 库,允许您调用Matlab
.
我不确定你的问题是什么,但我仍然很确定答案是“否”。
如果您使用其中一种 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 函数参数的字符串(上面的代码假设只有一个输入)。
不是 Visual Studio,但有一个Visual Studio Code MatLab扩展。