Вы можете поместить Matred = zeros(n);
в тело parfor, но это очень медленно.Вместо этого определите функцию с Matred = zeros(n);
в ней: фактически то же самое, но гораздо быстрее:
function Matred = calcMatred(i,n)
Matred=zeros(n);
for j=1:n
for k=1:n
Matred(j,k)=exp((j+i+k)/500);
end
end
Вот сравнение времени:
matlabpool
n = 175;
Matx2Cell = cell(n,1);
tic
parfor i=1:n
Matred=zeros(n);
for j=1:n
for k=1:n
Matred(j,k)=exp((j+i+k)/500);
end
end
Matx2Cell{i}=Matred;
end
toc
tic
parfor i=1:n
Matx2Cell{i}=calcMatred(i,n);
end
toc
matlabpool close
На моей машине это занимает7 секунд для первого и 0,3 секунды для второго.
Также обратите внимание, что я изменил объявление Matx2Cell
на cell(n,1)
, поскольку cell(n)
создает массив ячеек n x n
.