2

我有这些嵌套的 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

有没有人可以做到这一点?

4

1 回答 1

7

我希望您只显示代码的极其简化的版本,但无论如何,通过聆听 Matlab 的大量消息并阅读文档可以找到 parfor 的秘密。从学习良好的 Matlab 编码实践开始,并以这样一种方式简化您的代码,以使您的数据适合 Matlab 在parfor循环中想要的内容。

注意事项:

  1. Parfor 循环应该是整数。
  2. 所有矩阵都必须分类(阅读文档)。
  3. 容器矩阵应该用在嵌套的 for 循环中

这是我会做的一种方式,虽然这取决于你的最终申请

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
于 2012-11-18T21:52:42.097 回答