Matlabpool会导致surf()函数出现问题

时间:2014-04-14 14:04:42

标签: matlab save-as parfor

我在Matlab中使用parfor遇到了问题。我在parfor循环中调用的函数中运行下面的代码:

  • 如果我打开matlabpool,程序会在saveas函数崩溃;
  • 如果我不打开matlabpool,一切正常;
  • 如果我同时评论两个surf来电,那么即使matlabpool打开,一切也都能正常运行。

我通常使用.pdf格式 saveas ,但如果我<。>以<。strong格式保存,一切正常。 .fig格式是唯一不会导致问题的格式。 当然,我无法调试并行循环,因为parfor with matlabpool open不允许步入,因此如果没有matlabpool打开,我可以看到每个变量都是好的。

我错过了什么吗?在parfor循环中使用冲浪我找不到任何已知问题。有太多奇怪的问题试图了解真正的问题在哪里,所以我问是否有人有类似的问题。

threads=4;

matlabpool(threads);

parfor i=1:threads
    t=getCurrentTask();
    tmpPath=['tmp' num2str(t.ID)];
    importaData = open([tmpPath '\' 'Title','.mat']);
    if isempty(importaData) == 0
        f8 = importaData.data; %clear importaData;

        hf8 = figure('Name','Title','NumberTitle','off', 'Color',[1 1 1], 'visible', 'off');

        hold on; grid on; subplot(f8.subplot1);
        title('Title');
        h = surf(f8.x1,f8.y1,f8.surfVal1); set(h, 'EdgeAlpha', 0.05); axis('square'); view(0,90);
        xlabel(f8.xLabel1); ylabel(f8.yLabel1); zlabel(f8.zLabel1);
        hold on; subplot(f8.subplot2);
        h = surf(f8.x2,f8.y2,f8.surfVal2); set(h, 'EdgeAlpha', 0.05); axis('square'); view(0,90);
        xlabel(f8.xLabel2); ylabel(f8.yLabel2); zlabel(f8.zLabel2);

        cd(tmpPath);
        saveas(hf8, 'Title', 'pdf'); close(hf8);
        cd('..');
        delete([tmpPath '\' 'Title','.mat']);
    else
        error = -1;        
    end;
end;

UP:好的,这是导致错误的已完成程序:

  

使用distcomp.remoteparfor / getCompleteIntervals出错(第22行)   parfor正在使用的会话已关闭。

我的目标是将Title.mat保存到pdf文件中。当然,Title.mat包含一致和正确的数据。每个线程都应该进入一个包含。translate .mat文件的独占目录。如果我不打开游泳池,一切都按预期工作。如果我以.fig格式保存,一切都按预期工作。

0 个答案:

没有答案