将嵌套的FOR循环转换为PARFOR循环matlab

时间:2012-11-18 21:23:00

标签: for-loop parallel-processing matlab

我有这些嵌套的for循环,我想将其转换为parfor:

row = 1;
for i = 5 : 0.2 : 5.4
    col = 1;
    for j = 2 : 0.5 : 2.5
        matrx(row, col) = i * j;
        col = col + 1;
    end
    row = row + 1;
end

有没有人可以这样做?

1 个答案:

答案 0 :(得分:7)

我希望您只显示极其简化的代码版本,但无论如何,通过听Matlab的大量消息和阅读文档可以找到parfor的秘密。首先,学习优秀的Matlab编码实践,并以一种方式简化代码,使数据符合Matlab在parfor循环中的要求。

注意事项:

  1. Parfor循环应该是整数。
  2. 必须对所有矩阵进行分类(阅读文档)。
  3. 容器矩阵应该用于嵌套for循环
  4. 这是我做的一种方式,虽然这取决于你的最终申请

    iVal = 5 : 0.2 : 5.4;
    jVal = 2 : 0.5 : 2.5;
    
    iLen = length(iVal);
    jLen = length(jVal);
    
    matrx = zeros(iLen, jLen);
    
    parfor i = 1:iLen
        dummy = zeros(1, jLen);
        for j = 1:jLen
            dummy(j) = iVal(i) * jVal(j);
        end
        matrx(i,:) = dummy;
    end