0

십진수의 두 세트 (this link에있는 pt1 및 pt2의 x 및 y 좌표) 사이의 유사성을 테스트합니다. 부울 값 (15,682)의 예상 개수를 얻지 못합니다. decimal to binary conversion 문제 일 수 있습니까? 임계 값을 변경해도 많은 도움이되는 것은 아닙니다. 어떤 도움이라도 대단히 감사하겠습니다!유사점을 테스트해도 예상되는 부울 수가 검색되지 않습니까?

X는 (소수점의 고정 소수점의 설정 번호 반대) 부동 소수점 숫자는 유효 숫자의 일련 번호를 가지고 있기 때문에

for i = 1 to x.count-1 
if Math.Abs(x(i)-x(i-1))<myThreshold then... 
+2

잘못된 결과를주는 값의 예를들 수 있습니까? – Jens

+1

일치해야하고 일치하지 않는 두 개의 숫자에 중단 점을 넣으면 어떻게됩니까? –

+0

@Jens 두 파일을 질문에 추가했습니다. –

답변

1

나는 복잡한 대답을 좋아하기 때문에 Grasshopper에 좋은 cull duplicates 기능이 있습니다. 나는 당신의 가치 중 1144 개를 테스트했고, 865 개의 독특한 것을 돌려 줬다.

이 점은 중복을 제거하는 가장 빠른 방법입니다. 필자의 시스템에서는 파이썬으로 46ms와 1.1s를 동일하게 처리한다. 당신은 아주 갑자기 0에서 0.2 독특한 점의 수 방울을 허용하지만 증가로

Simple cull rig

는 :

graph of number of unique points

그래서 당신은 동일한 지점이 보인다. 이것은 Dropbox에있는 데이터를 내 보낸 방식과 관련이 있지만 모든 수치가 6dp이므로이 방법을 사용하는 것이 안전하다고 생각합니다. 데이빗이 가지고있는 모든 최적화를 활용하십시오.

2

는 절대 차이가 큰 값 사이에 제대로 구별됩니다 복식의 정렬 된 목록입니다 상대 오류

Math.Abs(x(i)-x(i-1))/Math.Max(Math.Abs(x(i)), Math.Abs(x(i-1))) 

을 대신 사용해야합니다. 불행히도이 값은 작은 값 사이의 차이를 과장하는 경향이 있으므로 (두 값이 0 인 경우 완전히 중단됨) 절대 차이가 바람직합니다.
사용자는 하나보다 더 큰 크기를 가진 하나의 값보다 훨씬 더 작은 크기를 가진 값의 절대 차이의 상대적인 차이 경향이 정규화 차분

Math.Abs(x(i)-x(i-1))/(1.0+Math.Max(Math.Abs(x(i)), Math.Abs(x(i-1)))) 

와 그들 사이에서 트레이드 오프 할 수있다.