所有
我在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
代码正在运行 有人可以帮我处理这个错误吗?
答案 0 :(得分:0)
在我发布之后我自己想出了lol
现在的问题是parfor中的if条件不能识别变量temp是什么。但是,if条件确实识别变量output.t。
所以,在这种情况下,我只需要替换变量" temp(xid,yid,37)"在" output.t(37)"的if条件中,问题就解决了。