Я использую matlab R2019a.У меня есть матрица, которую я хочу заполнить значениями в определенных позициях, основываясь на вычислении, сделанном на 2 дополнительных векторах.В настоящее время я делаю это с 2 циклами, но это не использует возможности векторизации Matlab.
Как следующий скрипт может быть выполнен в векторизованном виде:
C = zeros(size(vecB), size(vecA));
% Calculate face-vertix connectivity of face area values:
posMat = sparse(A, repmat((1:size(A,1))',1,3), ...
1, size(B,1), size(A,1));
for i = 1:size(B,1)
for j = 1:size(A,1)
if posMat(i,j) == 1
C(i,j) = vecA(j)/vecB(i)/3;
end
end
end
Размерыпеременных в скрипте:
size(A) = 5120 3
size(B) = 2562 3
size(B) = 2562 5120
size(posMat) = 2562 5120
size(vecA) = 5120 1
size(vecB) = 2562 1