2013-07-10 62 views
3

我想检查/改进一些我使用的校正算法。matlab低优先级系统调用

整件事是在Matlab中实现,是这样的

for ii = 1:nn 
    ... % Prepare some input files 
    parfor i = 1:n 
     system('...'); % simulation code 
    end 
    ... % Use the output and prepare some stuff that can be used to prep the next iteration 
end 

Wherey n大于我可以使用#Treads一个更大的数字。这通常需要一段时间才能运行,并且在此期间我想将计算机用于其他(非cpu饥饿)任务。因此我想运行低优先级的系统调用。

我已经尝试过这样做使用新的或启动,但随后调用不会等待,直到它完成和公正进行。将会有超过是否存在输出文件检查一个肮脏的黑客攻击,但话又说回来,我问自己,如果没有应该是一个更好的解决方案...

任何帮助,将不胜感激

你 magu_

回答

2

尝试使用/wait标志start命令:

>> system('start /LOW /WAIT matlab.exe'); 

开始了新的MATLAB实例,并恢复执行后,才关闭打开的应用程序。

当然,您需要在我与你想要运行的模拟程序名称提出的解决方案,以取代matlab.exe

+1

工程就像一个魅力thx。为了方便,我还添加了/ MIN标志。 –

+0

很好的答案!不幸的是,它不适合我。我使用的是我调用的.exe中的STDOUT,并且出于某种原因,使用Windows启动命令时,STDOUT不起作用。任何其他方法? – Trashman