2012-03-09 2 views
0

pdist을 사용하여 (Matlab에서) 3 차원 점 사이의 euclidian 거리를 계산합니다. 그러나 내가 매트릭스에서 제거 할 수없는 좌표를 가지고 있지만 그게 내가 pdist 무시하고 싶어.pdist가 값을 무시하는 방법

NaN 님과 함께 무시하고 싶은 값을 덮어 쓰려고했지만 pdist은 여전히 ​​계산에 사용하고 있습니다. pdist가 프로세스에서 값을 무시하도록하는 방법이 있습니까?

답변

0

나는 pdist을 모르지만 원하는대로 작동하려면 특정 행을 제거해야합니다. 당신이 원하지 않는 행의 인덱스를 찾을 수 있다면, 당신은 다음 작업을 수행 할 수 있습니다 :

d = [1,2,3;2,3,4;3,4,5] 
d = 
    1 2 3 
    2 3 4 
    4 5 6 
i = [1 3] 
d(i,:) 
    1 2 3 
    4 5 6 
id = pdist(d(i,:)) % assume id=2 
real_index = i(id) % now the real index is i(2)=3 

이제 real_index에서 행의 인덱스를 가질 것이다. (pdl 내 matlab에 존재하지 않는 것 그래서 진짜 출력을 얻을 수 없다,하지만 거기에 아이디어입니다!)

+0

알아요,하지만 행을 제거하는 것은 내가 원하는 (그 색인을 변경합니다, 그것은 내가 결국 필요로하는 것이다). 실제 데이터를 삭제하지 않고도'pdist'가 값을 무시하도록하는 방법이 필요합니다. –

+0

변수 자체는 변경되지 않습니다. 단지 pdist (즉, pdist (d (i, :)))에 행이없는 익명 변수 만 전달합니다. d는 동일하게 유지됩니다. –

+0

네, 그렇지만'pdist' (그리고 결과물)에 대한 입력을 바꿀 것입니다. 두 번째 행의 거리가 가장 작은 행렬 'd'가 있다고 가정 해보십시오. 첫 번째 행을 제거한 후,'pdist'는 가장 거리가 먼 행의 색인으로'1'을 리턴합니다 ('d'에 대해 틀립니다). –