是的,这是可能的。详情请看:
如果您需要一种使用 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 Compiler Runtime - 这是最终用户在没有安装 MATLAB 时需要的;对于本地测试,您不需要添加它)。
然后使用:
mbuild -setup
最后,点击“构建”图标。一段时间后,会生成一个exe。现在,您可以将此 exe 作为 C# 应用程序的进程启动,例如点击按钮:
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 文件)。