Преобразование вложенных циклов FOR в циклы PARFOR.

У меня есть эти вложенные циклы 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 ответ

Я надеюсь, что вы показываете только чрезвычайно упрощенную версию своего кода, но в любом случае секрет парфора можно найти, прослушав многочисленные сообщения Matlab и прочитав документацию. Начните с изучения хороших методов кодирования Matlab и оптимизации вашего кода таким образом, чтобы вписать ваши данные в то, что Matlab хочет в parfor петля.

Что следует отметить:

  1. Циклы Парфора должны быть целыми числами.
  2. Все матрицы должны быть классифицированы (см. Документацию).
  3. Контейнерные матрицы должны использоваться во вложенных циклах

Это один из способов сделать это, хотя это зависит от вашего окончательного заявления

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
Другие вопросы по тегам