我有几个灰度图像,我想将它存储在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 ,我不知道循环的上限是什么。它在运行时决定。 有谁能让我知道这个错误意味着什么,以及如何克服这个错误?
答案 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