Преобразование вложенных циклов 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
петля.
Что следует отметить:
- Циклы Парфора должны быть целыми числами.
- Все матрицы должны быть классифицированы (см. Документацию).
- Контейнерные матрицы должны использоваться во вложенных циклах
Это один из способов сделать это, хотя это зависит от вашего окончательного заявления
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