我有一组图像(~10^7),它们包含在一个巨大的二进制文件中。我想使用我已经拥有的功能有效地阅读和分析它们。代码中该用户函数foo
的每次迭代大约需要 0.1 秒,因此代码需要数天时间才能使用读取数据库的简单 for 循环来处理整个数据库:
...
for image_number=1:N
offset_in_bytes = npoints_per_image*element_size*(image_number-1);
fseek(fid, offset_in_bytes, 'bof');
s=fread(fid, npoints_to_load,'ushort');
image=reshape(s,nrows,[]);
[outputs]=foo(image)
end
我已经尽可能地优化了函数foo
(尽可能对代码进行矢量化,使用正确的数据类等)。我唯一还没有做的是创建一个 mex 版本。我想用parfor
这个,但我无法让它工作。艰难的每个图像都是独立的,上面的代码串行读取数据,所以我不能真正并行化它。如何使该parfor
选项可以访问此代码和数据库?谢谢