2014-02-20 2 views
2

Matlab의 Z=dist(W,P)의 작동 방식을 아는 사람이 있습니까? Matlab documentation은 가중치 행렬 W를 사용하는 알고리즘을 지정하지 않습니다.Matlab은 유클리드 거리 함수에서 어떻게 가중치를 적용합니까?

나는 옥타브를 사용하여 동작을 모방하려고합니다. 지금까지이 stack overflow post은 Octave의 Z=squareform(pdist(P'))이 Matlab의 Z=dist(P)과 동일하다는 것을 증명할 수있었습니다. 나는 또한 루프에 대한 몇 가지 사용 Z의 요소를 지정할 수 있습니다 :

function z=dist(w,p) 
    for i=1:size(p,2) 
     for j=1:size(p,2) 
      u=p(:,i); 
      v=p(:,j); 
      z(i,j)=sum((u-v).^2).^0.5; 
     end 
    end 
end 

그러나, 나는 가중치 행렬에 모든 온라인 문서를 찾을 수없는 걸, W. 단순히 때문에 W에 의해 squareform(pdist(P'))의 출력을 곱 수 없습니다 치수가 일치하지 않습니다. 나는 W를 예감시키기 위해 시도했다. sqrt(W*(P(:,1)-P(:,2)).^2), this stack overflow post과 같으나 출력 크기가 잘못되었습니다. 당신이 제공 할 수있는 모든 도움에 미리

P=  
9  7 10 
10 1 10 
2  3  2 
10 6 10 

W=  
10 9  5  8 
5  2 10 10 

>> D = dist(P) 
    0  10.0995 1.0000 
10.0995  0  10.3441 
1.0000 10.3441  0 

>> D = dist(W,P) 
3.8730  9.0000 3.7417 
12.0000 8.3666 12.3693 

감사 :

여기 matlab에를 사용하는 예입니다!

답변

0

신경망 도구 상자이 Matlab에서 구현되었으므로이 소스 파일을보고 알아낼 수 있습니다. 명령 창에서 edit dist을 입력하여 dist 열면

, 당신은 dist.apply 또는 dist.distance 실제 작업을 수행하기 위해 호출하는 것을보고, dist.apply 다시 후자. 따라서, 내 생각 엔 당신을 위해 무엇을 찾고하는 것은 그것을 볼 수있는 명령 창에서

toolbox/nnet/nnet/nndistance/+dist/apply.m 

유형 edit dist.apply의 라인 (9)에서 찾을 수 있다는 것입니다.

+0

음 ...이 대답은 matlab 설치에 대한 액세스 권한이있는 경우에만 도움이됩니다. – kaefert

관련 문제