Converting nested FOR loops to PARFOR loop matlab

2019-02-19 20:03发布

I have these nested for-loops that I would like to convert to 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

Does anyone any way in which this would be possible?

1条回答
聊天终结者
2楼-- · 2019-02-19 20:48

I hope you're only displaying an extremely simplified version of your code, but anyways, the secret to parfor can be found by listening to Matlab numerous messages and reading the documentation. Start by learning good Matlab coding practices, and streamlining your code in such a way to fit your data into what Matlab wants in a parfor loop.

Things to note:

  1. Parfor loops should be integers.
  2. All matrices must be classified (read the documentation).
  3. Container matrices should be used in nested for loops

This is one way I would do it, although it depends on your final application

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
查看更多
登录 后发表回答