MATLAB 함수를 사용하여 점과 곡선 사이의 최소 길이를 찾고 싶습니다. 커브는 매우 매끄럽지 않은 복잡한 함수로 설명됩니다. 그래서 나는 이것을 계산하기 위해 기존의 matlab 도구를 사용하기를 희망한다. 당신은 하나를 알게됩니까?MATLAB에서 점과 곡선 간의 최소 거리 찾기
답변
을 설명하는 t
(또는 x
)의 기능을 최소화하는 것입니다. 그래서 몇 가지 기본 아이디어를 설명하겠습니다.
커브가 알려진 비선형 함수 인 경우 기호 도구 상자를 사용하여 시작하십시오. 예를 들어, y = x^3-3 * x + 5 함수와 x, y 평면의 점 (x0, y0) = (4,3)을 생각해보십시오.
거리의 제곱을 적어주세요. 유클리드 거리는 쓰기 쉽습니다.
(x - x0)^2 + (y - y0)^2 = (x - 4)^2 + (x^3 - 3*x + 5 - 3)^2
그래서 MATLAB에서는 심볼릭 도구 상자를 사용하여 부분적으로 수행 할 것입니다. 최소 거리는 1 차 미분의 루트에 있어야합니다.
sym x
distpoly = (x - 4)^2 + (x^3 - 3*x + 5 - 3)^2;
r = roots(diff(distpoly))
r =
-1.9126
-1.2035
1.4629
0.82664 + 0.55369i
0.82664 - 0.55369i
저는 복잡한 뿌리에 관심이 없습니다.
r(imag(r) ~= 0) = []
r =
-1.9126
-1.2035
1.4629
거리 제곱의 최소값은 어느 것입니까?
subs(P,r(1))
ans =
35.5086
subs(P,r(2))
ans =
42.0327
subs(P,r(3))
ans =
6.9875
거리의 제곱입니다. 여기에서 목록의 마지막 루트로 최소화됩니다. x에 대한 최소 위치를 감안할 때 y (x) = x^3-3 * x + 5에 대한 식 대신에 y를 찾을 수 있습니다.
subs('x^3-3*x+5',r(3))
ans =
3.7419
커브가 위와 같이 간단한 함수 형식으로 작성 될 수 있다면 상당히 쉽습니다. 비행기의 점 집합에서만 알려진 곡선의 경우 내 distance2curve 유틸리티를 사용할 수 있습니다. 주어진 점에 가장 가까운 n 차원에서 공간 곡선 스플라인 보간에 점을 찾을 수 있습니다.
다른 곡선의 경우 타원이라고하면 극좌표의 함수로 타원을 매개 변수 형식으로 쉽게 작성하는 극좌표로 변환하면 해결할 수 있습니다. 그 작업이 끝나면 이전과 마찬가지로 거리를 작성한 다음 파생어의 근원을 푸십시오.
해결하기 어려운 경우는 기능이 매우 원활하지 않은 것으로 설명됩니다. 이 잡음인가 아니면 차별화 할 수없는 곡선인가? 예를 들어, 큐빅 스플라인은 어떤 레벨에서는 "매우 부드럽 지 않다". 조각 별 선형 함수는 나누기가 덜 부드럽습니다. 실제로 약간의 노이즈가있는 데이터 요소 세트 만있는 경우 노이즈를 제거할지 여부를 결정해야합니다. 본질적으로 평탄한 근사값에서 가장 가까운 점을 찾거나 보간 된 곡선에서 가장 가까운 점을 찾으십니까?
데이터 포인트의 목록을 보려면 평활 보간법을 사용하여 distance2curve 유틸리티를 다시 선택하는 것이 좋습니다. 계산을 직접하고 싶다면 데이터 포인트가 충분하다면 가장 가까운 데이터 포인트 자체를 선택하면 좋은 근사값을 찾을 수 있지만 데이터가 매우 근접하지 않은 경우에는 근사치가 될 수 있습니다.
이러한 클래스 중 하나에 문제가없는 경우 다양한 방법을 사용하여 문제를 해결할 수 있지만 문제에 대한 자세한 내용은 도움이 필요합니다.
두 가지 방법으로이 문제를 해결할 수 있습니다.
t = (0:0.1:100)';
minDistance = sqrt(min(sum(bxsfun(@minus, [x(t),y(t)], yourPoint).^2,2)));
: 당신의 곡선이 비교적 원활하고도 높은 정밀도를 필요로하지 않는 경우에 작동합니다
쉬운 방법은 점의 조밀 한 번호로 귀하의 곡선을 평가하고 단순히 최소 거리를 찾을 수 있습니다 열심히 방법은 누군가가 내가 결코 당신이 정확히 알고하지 않기 때문에 "그 복잡"대답은 항상 너무 복잡 말할 때 거리
distance = @(t)sum((yourPoint - [x(t),y(t)]).^2);
%# you can use the minimum distance from above as a decent starting guess
tAtMin = fminsearch(distance,minDistance);
minDistanceFitte = distance(tAtMin);
- 1. R/ImageJ : 점과 곡선 사이의 최단 거리 측정
- 2. 위도와 경도 좌표 간의 최소 거리
- 3. PostGIS : 점과 2 fks 사이의 최소 거리 계산 : 원점과 대상
- 4. 최소 거리
- 5. Matlab에서 곡선 그리는 방법
- 6. 점과 선 사이의 최소 직교 벡터
- 7. OpenGL에서 점까지의 거리 찾기
- 8. pl/sql을 사용하여 두 도시 간의 최소 거리 계산하기
- 9. SciPy 글로벌 최소 곡선 맞춤
- 10. matrix + matlab에서 거리 d에있는 이웃을 찾으십시오.
- 11. 최대 근점 거리 찾기
- 12. AS3 : 회전 거리 찾기
- 13. 찾기 거리 주소
- 14. 지도에서 선과 점 사이의 거리 찾기
- 15. 가장 매끄러운 15 % 곡선 찾기
- 16. 두 장소 간의 물리적 거리
- 17. 여러 도시 간의 거리 구하기
- 18. 최소 좌표 거리에서 좌표 찾기
- 19. matlab에서 픽셀 너비 찾기
- 20. matlab에서 회선 커널 찾기
- 21. 좌표 간의 거리 차이를 최소화하는 알고리즘
- 22. 트리의 최소 경로 찾기
- 23. 최소 정밀도 찾기
- 24. Rcpp의 최소 벡터 찾기
- 25. 가속도계를 사용하여 도보 거리 찾기
- 26. kinect로 움직이는 물체를 추적하기위한 최소 작동 거리
- 27. 3D 평면 알고리즘에서 점의 최소 수직 거리
- 28. 인접한 점 사이의 최소 거리 보장
- 29. Mathematica를 사용하여 시계열에서 중요한 최소 점과 최대 점을 확인하십시오.
- 30. MATLAB에서 양자화 레이어 수 찾기