반지름 측정에는 약간의 오차가있을 수 있습니다. 나는 오차의 양이 반지름 자체에 비례 할 것으로 기대합니다. 측정 값이 편향되지 않은 것으로 가정하자. 그런 다음 합리적인 솔루션은 가중 비선형 최소 제곱 피팅을 사용하고 가중치는 제곱 반지름에 반비례합니다.
이것은 Python R
,, Mathematica 및 많은 기능을 갖춘 통계 패키지 에서 사용할 수있는 표준 항목 이므로 간단히 설명하겠습니다. 다음은 장치 위치를 둘러싼 5 개의 임의 액세스 포인트까지의 거리를 상대 오차 10 %로 측정하여 얻은 일부 데이터입니다.
Mathematica 는 한 줄의 코드 만 있으면되고 적합도를 계산하는 데 CPU 시간이 필요하지 않습니다.
fit = NonlinearModelFit[data, Norm[{x, y} - {x0, y0}], {x0, y0}, {x, y}, Weights -> 1/observations^2]
편집하다--
큰 반지름의 Norm[{x, y} - {x0, y0}]
경우 구면 또는 타원체 거리를 계산하는 함수로 유클리드 거리 를 바꾸면 더 정확한 (구형 또는 타원체) 솔루션을 찾을 수 있습니다 . 에 티카 이 작업을 수행 할 수있는, 예를 들어 ,를 통해
fit = NonlinearModelFit[data, GeoDistance[{x, y}, {x0, y0}], {x0, y0}, {x, y},
Weights -> 1/observations^2]
-편집의 끝
이와 같은 통계 기법을 사용하는 한 가지 장점은 매개 변수 (장치의 좌표)에 대한 신뢰 구간을 생성 할 수 있으며 장치 위치에 대한 동시 신뢰 타원도 생성 할 수 있다는 것입니다.
ellipsoid = fit["ParameterConfidenceRegion", ConfidenceLevel -> 0.95];
fit["ParameterConfidenceIntervalTable", ConfidenceLevel -> 0.95]
데이터와 솔루션을 구성하는 것이 좋습니다.
Graphics[{Opacity[0.2], EdgeForm[Opacity[0.75]], White, Disk[Most[#], Last[#]] & /@ data,
Opacity[1], Red, ellipsoid,
PointSize[0.0125], Blue, Point[source], Red, Point[solution],
PointSize[0.0083], White, Point @ points},
Background -> Black, ImageSize -> 600]
흰색 점은 (알려진) 액세스 포인트 위치입니다.
큰 파란색 점은 실제 장치 위치입니다.
회색 원은 측정 된 반지름을 나타냅니다. 이상적으로는 모두 실제 장치 위치에서 교차하지만 측정 오류로 인해 그렇지 않습니다.
큰 빨간 점은 예상 장치 위치입니다.
빨간색 타원은 장치 위치에 대해 95 % 신뢰 영역을 구분합니다.
이 경우 타원의 모양이 중요합니다. 위치 불확실성이 NW-SE 선을 따라 가장 큽니다. 여기서, NE 및 SW까지의 3 개의 액세스 포인트까지의 거리는 거의 변하지 않으며, 2 개의 다른 액세스 포인트 (북쪽 및 남동쪽으로)까지의 거리 사이에서 오류가 발생합니다.
(일부 시스템에서는 가능성 함수의 윤곽으로 더 정확한 신뢰 영역을 얻을 수 있습니다.이 타원은 그러한 윤곽에 대한 2 차 근사치 일뿐입니다.)
반지름이 오류없이 측정되면 모든 원은 적어도 하나의 상호 교차 지점을 가지며 해당 지점이 고유 한 경우 고유 한 솔루션이됩니다.
이 방법은 둘 이상의 액세스 포인트에서 작동합니다. 신뢰 구간을 얻으려면 3 개 이상이 필요합니다. 두 개만 사용할 수있는 경우 교차 지점 중 하나를 찾습니다 (존재하는 경우). 그렇지 않으면 두 액세스 포인트 사이의 적절한 위치를 선택합니다.