我有这个代码,我想使用parfor而不是常规for循环来改善计算时间。当我试图运行代码时,它给出了错误
请建议一个等效的代码,允许我使用parfor作为以下代码
for i = 1:l % l = size of image data set = 9907
IDB{1,i} = imread(strcat(path,strcat(num2str(i),'.jpg')));
Icolor{1,i} = colorMoments(IDB{1,i}); % 6-features in each cell
Iwave{1,i} = waveletTransform(IDB{1,i}); % 8-features in each cell
IglrlFeatures{1,i} = textureFeatures(IDB{1,i}); % 44-features in each cell
ICW{1,i} = [Icolor{1,i} Iwave{1,i} IglrlFeatures{1,i}];
end
谢谢,
戈皮
答案 0 :(得分:0)
在循环之前预分配单元阵列大小
IDB = cell(1,l)
Icolor = ...
...
使用()
代替{}
将每个单元格作为单个内存项目进行访问。我还将第一个索引从常量1
更改为文字:
。我不确定是哪一个导致了您的错误,但通常情况下,当parfor
没有针对多维结构执行时,因为您的"切片"结构不与parfor切片表示对齐。通常其中一个会使您的表示形式可以访问。
for i = 1:l
IDB(:,i) = imread(...)
Icolor(:,i) = colorMoments(IDB(:,i));
...
end