Matlab并行计算时间效率

Matlab并行计算时间效率,matlab,parallel-processing,Matlab,Parallel Processing,目前我已经开始使用matlab的并行计算工具箱。我想用一个人脸识别代码来测试它。我的第一次尝试是使用10.000张图像的特征脸函数: 脚本: function [m, A, Eigenfaces] = EigenfaceCore(T) tic Train_Number = size(T,2); A = []; for i = 1 : Train_Number temp = double(T(:,i)) - m; A = [A temp,]; % Merging all centered

目前我已经开始使用matlab的并行计算工具箱。我想用一个人脸识别代码来测试它。我的第一次尝试是使用10.000张图像的特征脸函数:

脚本:

function [m, A, Eigenfaces] = EigenfaceCore(T)
tic
Train_Number = size(T,2);
A = [];  

for i = 1 : Train_Number
temp = double(T(:,i)) - m; 
A = [A temp,]; % Merging all centered images
end

L = A'*A;
[V D] = eig(L); 

x = zeros(1,size(D,1));
for i = 1 : size(D,1)
x (i) = D(i,i);
end

L_eig_vec = [];
for i = 1 : size(V,2) 
    if( x(i) > 1)
        L_eig_vec = [L_eig_vec V(:,i)];
    end
end

Eigenfaces = A * L_eig_vec; % A: centered image vectors
toc
对于这段代码,我需要大约112秒的时间


如果我打开一个包含4个内核的池,并使用
parfor
而不是
for
,则需要421秒。有人能帮我吗?我认为通过增加图像的数量(首先是大约20个图像,因为需要更多的时间),并行计算版本将超过普通版本。

仍然没有人吗?嗯,我找不到解决办法。也许对eig()使用并行计算?嗨,Kerem,我很难理解您的用例。如果我重新表述一下,您希望将这个函数并行化到四个核心上,这样您就可以用parfor替换所有for循环。你有一些输入的例子吗?仅供参考,我正在为其工作,该公司也提供了一个工具来分发matlab函数,请参见此。