MATLAB批处理函数出错

时间:2015-09-15 18:39:27

标签: matlab parallel-processing

我正在尝试使用批处理来简单地运行脚本的5个并行实例。作为测试,我尝试了这个:

for ii = 1:5
  jj{ii} = batch('magic(5000)');
end
wait(jj{5});

这似乎有效,但是我在5次通过时都会收到一个非常严重的警告。它位于非联网机器上,但标题是:

“警告:类'parallel.job.CJSIndependentJob'的对象无法保存到MAT文件中。”

每个循环迭代实际重复此错误4次。

任何想法问题在这里?我不打算将任何东西保存到磁盘上。

1 个答案:

答案 0 :(得分:1)

this BLOG命令用于调用脚本(或字符串,如此处)时,出现警告是因为默认,它会捕获整个工作区并将其发送给工作人员这样他们就可以用它来计算。这可以让你做这样的事情:

'Workspace'

并让它发挥作用。

在您的情况下,您有两个选项 - 您可以为batch指定j{ii} = batch('magic(1000)', 'Workspace', struct()); 选项,如下所示:

j{ii} = batch(@magic, 1, {1000}); % 1 is number of outputs requested

或者,你可以使用一个函数:

var gridSize = 20;
$('#dragme').draggable({
    grid: [ gridSize , gridSize ],
    snap: true,
    snapTolerance: gridSize/2,

    drag: function(event,ui){
         var factor = (1 / zoom) -1;

         ui.position.top += Math.round((ui.position.top - ui.originalPosition.top) * factor);
         ui.position.top -= ui.position.top % gridSize;
         ui.position.left += Math.round((ui.position.left- ui.originalPosition.left) * factor);
         ui.position.left -= ui.position.left % gridSize;


         if (ui.position.left < 0) 
             ui.position.left = 0;
         if (ui.position.left + $(this).width() > canvasWidth)
             ui.position.left = canvasWidth - $(this).width();  
         if (ui.position.top < 0)
             ui.position.top = 0;
         if (ui.position.top + $(this).height() > canvasHeight)
             ui.position.top = canvasHeight - $(this).height();
    }
});