나는 for 루프를 matlab 프로그램에서 세 번 중첩했습니다. 여러분 중 누구라도 최적화 할 수 있습니까?matlab에 중첩 된 for 루프를 최적화하는 방법
w=5;
a = rand(m*n,10); b=rand(m,n);
for i = 1 : m
for j = 1 : n
for k = 1 : l
if (i-w >= 1 && i+w <= m)
featureL = a(((i-1)*n)+j,:); featureR = a(((i-1)*n)+j-d,:);
D1(i,j,k) = sqrt(sum((featureL - featureR) .* (featureL - featureR)));
D2(i,j,k) = mean2(b(i-w:i+w, j-w:j+w));
end
end
end
end
성능이 meshgrid를 사용하여 크게 향상 될 수 있지만 그 방법을 잘 모르겠습니다.
미리 감사드립니다.
은 이런 식으로 뭔가를 할 수 있습니다 ..
[X Y Z] = meshgrid(1:m,1:n,1:l);
D1(something containing X,Y,Z) = sqrt(sum((a(something cont. X,Y) - a(something cont. X,Y)).*(a(something cont. X,Y) - a(something cont. X,Y))));
% similarly D2
감사합니다 많이!
아니 전체 대답하지만, 빠른 힌트 시작 : 다음은이 중 일부를 적용하여 코드는 다음과 같이 가장 outter는 루프를 수정하여 경우 문을 피하기 : MW : 'I = 1 + w에 대한 '. – Bentoy13
작업중인'm','n','l' 및'd'의 값을 지정할 수 있습니까? –
@ Bentoy13 이것은 확실히 첫 번째 개선점입니다. 또한 나는 계산에'k'의 영향을 보지 못합니다. 내가 아는 한 모든 페이지는 동일합니다 ->'repmat'을 사용하십시오. – denahiro