我们可以在C#中创建GUI来运行MATLAB代码吗?

我在MATLAB中设计了代码并且工作正常。 我在MATLAB中使用GUI,但这对我来说很头疼。 我想我可以简单有效地创建GUI。 我们可以在C#中创建GUI,它还将运行我设计的MATLAB的整个代码吗?

是的,这是可能的。 有关详细信息,请查看:

  • 从C#调用MATLAB函数
  • 将MATLAB与C#集成
  • MATLAB编译器

如果你需要一个快速而肮脏的方法用C#GUI(例如WinForms)包装MATLAB代码,一个选项是从你的MATLAB代码(.m)创建一个exe – 从.NET,你可以轻松地启动这个exe作为一个新进程。 请注意,这种方法在某些情况下可能不是最好的,因为exe调用引入的延迟可能相当大(正如另一个答案所解释的那样)。

例如:首先,将MATLAB代码编写为函数:

function y=SamplePlot(p, d, w, t) numericValueP=str2num(p); numericValueD=str2num(d); numericValueW=str2num(w); time=str2num(t); %... do stuff ... plot(...); 

输入参数将通过命令行作为字符串参数传递给此代码,因此它们通过str2num进行转换。 例如一个MATLAB调用

 SamplePlot('1', '2', '3', '4') 

将表示为

 SamplePlot.exe 1 2 3 4 

现在,从.m文件创建一个独立的控制台应用程序:在MATLAB控制台中,写:

 deploytool 

名称:SamplePlot.prj(例如)。 目标:控制台应用程序 添加.m文件。 包:添加MCR(这是MATLAB编译器运行时 – 如果他没有安装MATLAB,这是最终用户需要的;对于本地测试,您不需要添加它)。 然后使用:

 mbuild -setup 

最后,单击“构建”图标。 一段时间后,生成一个exe。 现在,您可以从C#应用程序启动此exe作为进程,例如在按钮单击时:

 private void button1_Click(object sender, EventArgs e) { string p=TextBox1.Text; string d=TextBox2.Text; string w=TextBox3.Text; string t=TextBox4.Text; string params = String.Format("{0} {1} {2} {3}",p,d,w,t); System.Diagnostics.Process.Start("SamplePlot.exe", params); } 

我遗漏了一些细节,但这是一个可能的选择。

(如果我没记错的话,也可以用这种方式生成程序集;然后可以调用程序集而不是exe文件)。

我对C#很不熟悉,但最终碰巧使用了MATLAB的.NET类。

所以,你也可以反过来做,而不是之前的答案建议:

由于MATLAB能够创建/打开像对话框这样的.NET gui元素,我想你也应该能够从MATLAB打开你的.NET-GUI,然后通过回调插入你的MATLAB代码。 参见例如: http : //www.mathworks.de/de/help/matlab/matlab_external/getting-started-with-net.html

根据你想从gui执行matlab代码的频率以及matlab处理时间通常是多长时间,这也避免了使用MATLAB编译器生成的.exe引入的相当大的开销。 比如说,你想做每个其他按钮点击不到一秒的快速矩阵计算操作,而不是每次启动一个standalone.exe都会让你的gui变得毫无用处。

此链接非常有用和简单: 从C#Client调用MATLAB函数