나는 3D 공간에서 점들의 벡터를 가지고 있습니다.거리 점 3D
A = rand(80,3)
점 사이의 모든 거리가 포함 된 벡터가 필요합니다.
D = pdist(A,'euclidean')
벡터를 반환합니다. 1-by-3160 올바른 기능을 사용하고 있는지 알려주시겠습니까? 감사합니다.
나는 3D 공간에서 점들의 벡터를 가지고 있습니다.거리 점 3D
A = rand(80,3)
점 사이의 모든 거리가 포함 된 벡터가 필요합니다.
D = pdist(A,'euclidean')
벡터를 반환합니다. 1-by-3160 올바른 기능을 사용하고 있는지 알려주시겠습니까? 감사합니다.
통계 도구 상자가없는 경우 올바른 기능을 사용할 수 없습니다. 당신이한다면 - 당신이 사용할 수있는 많은 기능 중 하나입니다. 또한 같은 것을 할 수있다 :이 명시 적으로 두 점 사이의 거리를 계산
sz = size(A);
A1 = reshape(A, [1 sz]);
A2 = permute(A1, [2 1 3]);
D = sqrt(sum(bsxfun(@minus, A1, A2).^2,3));
을 (즉, 두 배의 작업을 수행하고, 두 배의 공간을 점거 : 6400 대신 3180의 요소). 그러나 두 점 사이의 거리를 찾는 것이 더 쉽습니다.
그러면이 계산 결과를 pdist
에서 얻은 결과와 비교하여 동일 여부를 확신 할 수 있습니다. 주의하십시오 - pdist
은 기본적으로 벡터를 반환하므로 문서를보고 해석 방법을 이해해야합니다. 기능 squareform
당신을 도울 수 있습니다
difference = sum(abs(squareform(D)) - pdist(A, 'euclidean'));
그것은 "올바른 기능"입니다 당신의 정의를 ... 당신이 원하는에 따라 어떤 ...
당신이 그것을 시도? –
한 가지 방법은 알아낼 수 있습니다. 시도해보십시오. –
네, 맞지만 그것이 정확한지 모르겠습니다 ... – gabboshow