在Windows上以编程方式中断MATLAB

当通过GUI使用MATLAB时,我可以通过按CtrlC来中断计算。

有没有一种方法可以通过MATLAB Engine C API使用MATLAB来编程

在Unix系统上有一个解决scheme: 发送一个SIGINT信号 。 这不会杀死MATLAB。 它只会中断计算。 我正在寻找一个适用于Windows的解决scheme。


澄清 (看到唯一的回答者被误解):

我正在寻找一种方法来中断任何MATLAB的计算,而无需控制正在运行的MATLAB代码。 我正在寻找在Windows系统上的MATLAB命令窗口中按下CtrlC的编程等效命令。 这是一个Mathematica-MATLAB接口 :我需要将Mathematica的中断转发给MATLAB。 如上所述,我已经在Unix上有一个工作实现; 这个问题是关于如何在Windows上做到这一点。

一种方法是在执行长计算之前使MATLAB引擎会话可见。 这样,如果你想中断执行,你只需把可见的命令窗口放到焦点上,然后按Ctrl-C。

这可以使用engSetVisible函数完成

这里是我尝试使用MATLAB COM自动化的一个简单例子。 这个过程应该是类似的,因为MATLAB引擎是在Windows上使用COM实现的(管道在Unix上使用)。

脚本在Powershell中完成:

 # create MATLAB automation server $m = New-Object -ComObject matlab.application $m | Get-Member # make the command window visible $m.Visible = $true # execute some long computation: pause(10) $m.Feval('disp', 0,[ref]$null, 'Press Ctrl-C to interrupt...') $m.Feval('pause', 0,[ref]$null, 10) # close and cleanup $m.Quit() $m = $null Remove-Variable m 

在暂停期间,您可以通过在命令窗口中按Ctrl + c来分解它:

CMD窗口

没有一个直接的方法:所有这些例程都必须被解开,并且他们的工作空间被清理了,这可能会调用退出处理程序,等等。

我能想到的最接近的就是你的主程序有一个try / catch,然后当你想中止的时候,error()这个catch被键入的特定字符串,当你检测到它时,从main常规。