提高Matlab的效率:具有大数据的多个循环

时间:2014-10-22 22:59:33

标签: matlab loops time vectorization large-data

我有以下过程。

for x = 1:60
    for y = 1:160
        % load a 2D 'Image' from a 3d matrix
            for a = 0:52
                for b = 0:52
                    imageWin = Image((a*8+1):(a*8+96), (b*8+1):(b*8+96));    

                    for d = 1:5
                        [glcm(:,:,d),im] = graycomatrix(imageWin,'NumLevels',256,'G',[],'Symmetric', true,'Offset',d);
                    end

                    % Calculation which produce 'results' and takes 0.16 seconds
                end
              end
              finalResult(:,:,y) = result;
     end
     save(strcat('finalResult', num2str(x),'.mat'), 'finalResult');
end

我的3d矩阵是512x512x160x60。因此,一个' Image'将有2809,96x96窗口。

正如你所看到的,这对于一个人来说需要7.5分钟,因此需要19个小时才能完成所有160个而且所有2809x160x60需要更多。

到目前为止,我已经做了很多改进,并且不知道什么可以做得更多。任何想法都将受到高度赞赏。

0 个答案:

没有答案