从Matlab中的脚本,我需要运行一个外部命令。通常,这是使用system完成的,但脚本执行会阻塞,直到命令完成。有没有办法从脚本执行命令而不阻塞执行?
编辑:操作系统是Windows Server。
答案 0 :(得分:2)
在Windows上,您需要使用start
system('start notepad.exe');
答案 1 :(得分:2)
这可能有点矫枉过正,但是如果你有完整的matlab安装,你可以使用Parallel Computing toolbox在一个单独的线程中运行命令。这实际上很容易,基本语法是:
obj = createJob();
set( obj, 'FileDependencies', {<list .m files used here>, 'ExampleFileFunc.m'});
task = createTask(obj, @ExampleFileFunc, 1, {4});
submit(obj);
waitForState(task,'finished');
varargout = get(task,'OutputArguments');
{4}
是ExampleFileFunc
的输出数量。
答案 2 :(得分:1)
您可以使用bang(!)然后使用命令,例如
!vi
让它在没有阻止执行的情况下运行它将是
!vi &
程序将显示在单独的屏幕上,然后您返回到命令窗口,以便继续运行MATLAB语言语句。它对脚本做了同样的事情,所以我想这就是你想要使用的东西。