Visual studio 2010 matlab与visualstudio的集成
有没有可能从VisualStudio获得一个接口,可以调用matlab文件(代码)并运行它 我基本上想要一个.exe文件,其中有来自VS的GUI和来自matlab的代码。Visual studio 2010 matlab与visualstudio的集成,visual-studio-2010,matlab,Visual Studio 2010,Matlab,有没有可能从VisualStudio获得一个接口,可以调用matlab文件(代码)并运行它 我基本上想要一个.exe文件,其中有来自VS的GUI和来自matlab的代码。 谢谢我不太确定你的问题是什么,但我仍然很确定答案是“不” 如果您使用一种visual studio语言(例如C#、VB.NET等)构建了用户界面,并且希望该界面调用matlab脚本,那么我知道您有两个选项: 1) 从Mathworks购买matlab.NET接口。我不太清楚它是怎么工作的,因为它需要很多钱,而我没有 2) 购买
谢谢我不太确定你的问题是什么,但我仍然很确定答案是“不” 如果您使用一种visual studio语言(例如C#、VB.NET等)构建了用户界面,并且希望该界面调用matlab脚本,那么我知道您有两个选项: 1) 从Mathworks购买matlab.NET接口。我不太清楚它是怎么工作的,因为它需要很多钱,而我没有 2) 购买matlab编译器(这也需要很多钱)并将matlab代码“编译”成可执行文件。然后通过命令行从您选择的.NET语言调用该可执行文件。这种方法的问题是,将数据传递到matlab脚本的唯一方法是通过从命令行调用脚本。通常的解决方法是通过命令行在调用中传递txt或csv文件的位置,然后让matlab脚本的第一部分专门用于从该txt或csv文件检索数据。这种方法的另一个问题是,如果你想调用很多matlab脚本,这将花费你很长时间,因为每次你在后台调用一个“编译”的matlab脚本,你实际上是通过一个叫做matlab编译器运行库的beast创建所有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函数的参数(上述代码仅假设一个输入)。如果您正在构建GUI并将其集成到
.mex
文件中,则以下操作有效:
您可以使用mex.h
中的mexCallMATLAB
调用matlab函数或用户定义函数:
如果您正在用C/C++构建一个独立的程序(这将生成一个
.exe
文件),那么有一个名为Matlab引擎
的东西,您可以调用它来执行Matlab
代码。请看这里以了解有关此接口的更多信息。它基本上是一个C库,允许您调用Matlab
而不是Visual Studio,但是有一个Matlab。这是不可能的。VS无法执行/调试matlab代码。这是两种不同的动物。那么你能告诉我为matlab代码创建良好GUI的最佳方法是什么吗,由于matlab提供的GUI非常低level@Atish一个好的GUI就是一个好的GUI,无论它是为运行matlab代码还是为任何其他任务而设计的。如何构建一个好的GUI的主题与您最初的问题非常不同,老实说,这不是一篇简单的堆栈溢出文章就能回答的问题。这是一个大话题。如果您想知道如何从VS GUI调用matlab脚本,那么,我在上面的回答中附加了一些VB.NET代码,您应该可以开始了。@Atish另外,如果您觉得我已经回答了您的初始问题,请单击我的回答旁边的勾号来标记我的回答。谢谢