ben drake
ben drake

Reputation: 21

Converting nested FOR loops to PARFOR loop matlab

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?

Upvotes: 2

Views: 2057

Answers (1)

Rasman
Rasman

Reputation: 5359

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

Upvotes: 7

Related Questions