如何连接parfor循环的结果

时间:2015-07-10 12:17:11

标签: matlab matrix parallel-processing parfor

我正在运行parfor循环,在每次迭代时返回具有不同维度的矩阵,我需要将这些矩阵连接起来以获得最终结果

例如

T = [1 2 3 0
  7 8 9 10]

我为每一行计算应该返回的最大块

第一行

 [1 2
1 3] 

和第二行

[7 8 9 
 7 9 10]

我的代码是

parfor i = 1:size(T,1)
   findMBL(Data,T(i,:));
end

其中findMBL是返回块的函数。 我的问题是如何在一个矩阵中连续迭代的结果

结果应该是

[1 2 0
1 3 0
7 8 9
7 9 10]

注意:第1行和第2行中的零是填充

2 个答案:

答案 0 :(得分:0)

如果您知道结果的最大大小,那么很容易做到。

% I am completely guessing this, substitute for realistic maximum possible size
res=zeros(2*size(T,1),size(T,2)); 


parfor i = 1:size(T,1)
   auxres=findMBL(Data,T(i,:));
   res([i*2-1,i*2],1:size(auxres,2))=auxres;
end

答案 1 :(得分:-1)

您必须定义一个缓冲区单元格,您将在每次迭代时放置数组,然后使用cell2mat获取连接结果。