matlab并行计算:parfor中的变量未被分类

时间:2016-10-28 19:30:18

标签: matlab parfor

所有

我在matlab上遇到了一个非常有趣的情况,以下是我的问题。

fid = 'test.nc';
temp = ncread(fid,'temp');
[s1,s2,s3] = size(temp);

for m = 1 : 100
   parfor xid = 1 : s1
      for yid = 1 : s2
         output = struct;
         output.t = squeeze(temp(xid,yid,:));
         if ~isnan(temp(xid,yid,37))
            output.t(:) = 1;
         else
            output.t(:) = nan;
         end
         temp(xid,yid,:) = output.t;
      end
   end
end

在这种情况下,我收到了错误消息......

“使用pwp_parallel时出错(第238行)错误:parfor中的变量temp无法分类。请参阅MATLAB中的循环并行”概述“。

但是,如果我的代码看起来像这样......

fid = 'test.nc';
temp = ncread(fid,'temp');
[s1,s2,s3] = size(temp);

for m = 1 : 100
   parfor xid = 1 : s1
      for yid = 1 : s2
         output = struct;
         output.t = squeeze(temp(xid,yid,:));
         output.t(:) = 1;
         temp(xid,yid,:) = output.t;
      end
   end
end

代码正在运行 有人可以帮我处理这个错误吗?

1 个答案:

答案 0 :(得分:0)

在我发布之后我自己想出了lol

现在的问题是parfor中的if条件不能识别变量temp是什么。但是,if条件确实识别变量output.t。

所以,在这种情况下,我只需要替换变量" temp(xid,yid,37)"在" output.t(37)"的if条件中,问题就解决了。

相关问题