如何在matlab中将一个3D数组附加到parfor中?

时间:2016-06-16 04:07:38

标签: matlab multidimensional-array append parfor

我有几个灰度图像,我想将它存储在matlab中的3d数组(hieghtXwidthXnumber-of-images)中。

我的代码看起来像这样

train_img = [];
parfor i=1:100
      a = imread(image-file);
      a1 = imresize(a, 0.5);
      b = rgb2gray(a1);
      d = im2double(b);
      train_label = [train_label;p];
      train_img = cat(3,train_img(:,:,:),d);
end
  

错误:parfor中的临时变量train_img未初始化。   请参阅MATLAB中的并行循环,"未初始化的临时数"。

在上面的代码中,parfor i = 1: 100 ,我不知道循环的上限是什么。它在运行时决定。 有谁能让我知道这个错误意味着什么,以及如何克服这个错误?

1 个答案:

答案 0 :(得分:0)

您在表达式的左侧和右侧写下train_img。因此,下一次迭代取决于train_img的先前值。这可以防止MATALB使用parfor。如果你修改代码如下,它应该工作:

parfor i=1:your_upper_bound %it can be a variable too, just define it
      a = imread(image_file);
      a1 = imresize(a, 0.5);
      b = rgb2gray(a1);
      d = im2double(b);
      train_label(i,1) = p; % if this doesn't work -> define train_label before parfor
      train_img(:,:,i) = d; % if this doesn't work -> define train_img before parfor
end