векторизация цикла Matlab быстрее - PullRequest
0 голосов
/ 12 октября 2018

У меня есть следующий цикл Matlab, который очень медленный.Я пытаюсь сделать классификацию по пикселям и создать тепловую карту здесь.Любые предложения относительно того, как сделать цикл быстрее?Как векторизовать массивы?Заранее спасибо.

im1_full = imread(img);

hmap1a=0*im1_full(:,:,1);
hmap1b=double(0*im1_full(:,:,1));
hmap1c=double(0*im1_full(:,:,1));

for i11=1:10:size(im1_full,1)-460-1
    i11
    for j11=1:10:size(im1_full,2)-700-1
        %FOR DEBUGGING
        %j11
        % This is used for bag of features
        tmp1=im1_full(i11:i11+460-1,j11:j11+700-1,:);
        [labelIdx, scores]= predict(categoryClassifier, tmp1);
        hmap1a(i11,j11)= labelIdx;
        hmap1b(i11,j11)=scores(1);
        hmap1c(i11,j11)=scores(2);

    end
end
toc;

1 Ответ

0 голосов
/ 12 октября 2018

хорошая попытка harish!если бы я был вами, я бы сделал следующее:

im1_full = imread(img);

hmap1a=0*im1_full(:,:,1);
hmap1b=double(0*im1_full(:,:,1));
hmap1c=double(0*im1_full(:,:,1));

%put the max size outside the loop
imax = size(im1_full,1)-460-1;
jmax = size(im1_full,2)-700-1;

for i11=1:10:imax
    for j11=1:10:jmax
        tmp1=im1_full(i11+460-1,j11+700-1,:); %no need i11:i11, because its already an integer
        [labelIdx, scores]= predict(categoryClassifier, tmp1);
        hmap1a(i11,j11)= labelIdx;
        hmap1b(i11,j11)=scores(1);
        hmap1c(i11,j11)=scores(2);

    end
end
toc;

когда вы поместите максимальный размер за пределы цикла, это предотвратит пересчет максимального предела итерации для каждой итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...