同时运行Matlab代码

时间:2016-06-12 16:31:06

标签: matlab image-processing parallel-processing

我正在尝试同时从两个摄像头捕获图像,请参阅以下matlab代码:

cam1 = initCamera(1);
cam2 = initCamera(2);

image1 = cam1.getSnapshot();
image2 = cam2.getSnapshot();
因为matlab逐行处理这段代码,它们是从代码中获取的图像之间的延迟。

我想打电话给" getSnapshot"同时指示两个摄像机,因为我想从两个摄像机同时准确地获取图像。

有没有办法在matlab中执行此操作?我试图使用parforspmd,但我的相机对象变量范围有问题。

2 个答案:

答案 0 :(得分:0)

并行工具箱可以帮助您。

matlabpool    % Use default parallel configuration
spmd          % By default uses all labs in the pool
    INP = load(['somedatafile' num2str(labindex) '.mat']);
    RES = somefun(INP);
end
实验室中的

RES可以从实验室1 RES{1},实验室2的RES{2}等访问客户端。

答案 1 :(得分:0)

如果您希望它在每个工作人员上运行(即spmd):

spmd
    cam = initCamera(labindex);
end

spmd
    img = cam.getSnapshot();
end

img{1};   % access first image
img{2};   % access second image, etc

请注意,cam变量存在于每个工作区的工作空间中。它不是切片变量,因此您无需索引。您可以使用单元数组索引从每个worker获取结果,例如img{1}等。

如果您想使用parfor,可以这样做:

parfor i = 1:2
    cam{i} = initCamera(i);
end

parfor i = 1:2
    img{i} = cam{i}.getSnapshot();
end

img{1};   % access first image
img{2};   % access second image