通过GUI使用MATLAB时,我可以通过按Ctrl-C来中断计算.
有没有办法在使用MATLAB到the MATLAB Engine C API时以编程方式执行相同的操作?
在Unix系统上有一个解决方案:send a SIGINT signal.这不会杀死MATLAB.它只会中断计算.我正在寻找适用于Windows的解决方案.
澄清(看到唯一的回答者误解):
我正在寻找一种方法来中断任何MATLAB计算,而无需控制正在运行的MATLAB代码.我正在寻找在Windows系统上的MATLAB命令窗口中按Ctrl-C的程序化等效项.这是针对a Mathematica-MATLAB interface:我需要将Mathematica的中断转发到MATLAB.如上所述,我已经在Unix上有一个工作实现;这个问题是关于如何在Windows上执行此操作.
解决方法
一种方法是在执行长计算之前使MATLAB Engine会话可见.这样,如果要中断执行,只需将可见命令窗口置于焦点并按Ctrl-C即可.
这可以使用engSetVisible
功能完成
这是我尝试使用MATLAB COM Automation的一个简单示例.该过程应该类似,因为MATLAB Engine是在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',[ref]$null,'Press Ctrl-C to interrupt...') $m.Feval('pause',10) # close and cleanup $m.Quit() $m = $null Remove-Variable m
在暂停期间,您可以通过在命令窗口中按Ctrl c来中断它: