코사인 거리를 사용하면 두 벡터 사이의 각도를 찾을 수 있습니다. 유사 벡터 (케이스에서 행과 비교 벡터)은 행의 모든 쌍에 각각에이 기능을 적용하기 위해 1 이종 벡터가 0
function d = cosSimilarity(u, v)
d = dot(u,v)/(norm(u)*norm(v));
end
에 가까운 값을 갖도록 가까운 값을 가질 행렬 M
및 V
은 중첩 된 for
루프를 사용할 수 있습니다. 거의 대부분의 우아한하지만 작동합니다
대신 중첩
for
루프의
numRowsM = size(M, 1)
numRowsV = size(V, 1)
similarThresh = .9
for m = 1:numRowsM
for v = 1:numRowsV
similarity = cosSimilarity(V(v,:), M(m, :))
% Notify about similar rows
if similarity > similarThresh
disp([num2str(m) ' is similar to a row in V'])
end
end
end
, 확실히 다른 방법이 없습니다. this 질문에서 솔루션을 살펴 보는 것으로 시작할 수 있습니다. 그러면 매트릭스의 행을 셀 배열의 셀로 변환 한 다음 cellfun
과 함께 함수를 적용하여 루프를 피하는 데 도움이됩니다.
유사점에 대한 척도는 무엇입니까? 'pdist2'는 당신을 도울 것입니다 – Dan
@ServerS'pdist2'는 유클리드 –