반경 r을 사용하고 원점을 중심으로 반경 r의 원 안에 정수 값의 개별 점을 정확하게 반환하는 함수를 작성해야합니다. 어떤 조언을 부탁드립니다. 다만 접근법으로서MATLAB : 그래프 아래의 불연속 점의 수를 반환합니다.
답변
코드를 푸는 데 아무런 시도도하지 않았지만 좋은 연습 문제입니다. 먼저 할 수있는 것은 원점에 중심을 둔 좌표의 정사각형 그리드를 생성하는 것입니다. 범위는 -r
과 +r
사이입니다. 질문을 올바르게 해석하는 경우 2D 그리드의 각 점 사이의 간격은 1입니다.
일단 이렇게하면 유클리드 거리가 정확히 r
보다 작은 위치를 찾은 다음이 조건이 충족되는 지점 수를 반환 할 수 있습니다. 점의 정사각형 격자를 생성하려면 meshgrid
을 사용하십시오.
[x,y] = meshgrid(-r:r, -r:r);
x = x(:);
y = y(:);
num_points = sum(x.^2 + y.^2 < r^2);
x = x(:);
및 y = y(:);
가 중요하다 : 당신이 r
에 반경을 정의했다고 가정하면, 다음과 같은 코드를 할 것입니다. 그러면 각 x
및 y
에 대한 2D 그리드가 단일 열 벡터로 바뀝니다. 특히 매트릭스의 각 열을 가져 와서 단일 벡터를 만들기 위해 위에서부터 아래로 모두 쌓습니다. 분석이 쉬워집니다. 그 이유는 2D 행렬에 sum
을 사용하려고하면 한 방향으로 만 합칠 수 있기 때문입니다. 모든 열을 개별적으로 합하거나 모든 행을 개별적으로 합할 수 있습니다. 전체 배열에 대해 합을 구하기 때문에 sum
을 두 번 호출하거나 2D 그리드를 1D 배열의 스택으로 변환 할 수 있습니다. 나는 그것이 더 깨끗하다고 생각하기 때문에 두 번째 접근법을 선택했으나 일부 사람들은 sum
도 함께 호출하는 것을 신경 쓰지 않는다. 단지 스타일 선호도 일 뿐이다.
일단 이렇게하면 유클리드 거리가 반지름보다 작은 지 여부 만 확인하면됩니다. 제곱근 계산을 피하기 위해 Euclidean 제곱 거리를 계산합니다. 계산 시간이 절약됩니다. 그런 다음 모든 인스턴스에 대해 합계를 계산하면 반경 내에있는 점의 수를 정의합니다.
예를 들어 반경이 r = 2
이라고 가정합니다. 이 점을 우리의 meshgrid
은 다음과 같은 형태가 될 것이다 우리의 2D 그리드의 각 좌표를 들어
r = 2;
[x,y] = meshgrid(-r:r, -r:r)
x =
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
-2 -1 0 1 2
y =
-2 -2 -2 -2 -2
-1 -1 -1 -1 -1
0 0 0 0 0
1 1 1 1 1
2 2 2 2 2
, 우리는 각 지점에서 관련된 (x,y)
쌍을 가지고있다. 우리가 얻을 포인트의 마지막 번호는 :
num_points =
9
이 엄격하게 적은 2보다는 원점을 중심으로하는 3 × 3 블록해야되는 점으로 의미가 있습니다.1
이 좌표가 엄격하게되고 만족을 의미하는 true
를 나타내는 있습니다
[x,y] = meshgrid(-r:r, -r:r);
disp(x.^2 + y.^2 < r^2);
0 0 0 0 0
0 1 1 1 0
0 1 1 1 0
0 1 1 1 0
0 0 0 0 0
위치 : 당신이해야 할 경우의 그리드는 1 차원 벡터로 좌표를 변환하기 전에 모습을 시각화 할 수 r
보다 작음 0
인 위치는 false
으로 바깥에 있음을 나타냅니다. 알고리즘의 마지막 부분은이 배열 전체를 합한 것입니다.이 배열은 우리에게 9를주고, 정확히 얼마나 많은 점이 정확히 r
안에 있는지 알 수 있습니다.
희망이 있습니다. 행운을 빕니다!
- 1. Matlab에서 불연속 점의 면적 계산하기
- 2. Matlab - 원호 모서리에있는 점의 행렬
- 3. 모서리로 연결된 점의 애니메이션 그래프
- 4. 경로에서 터치 점의 수를 늘립니다.
- 5. Matlab - 연속 데이터를 불연속 데이터로 변환
- 6. Python Reportlab 여러 줄 아래의 그래프 그래프
- 7. 각 점의 거리를 지정하여 곡선을 그립니다 (Matlab)
- 8. matlab - 그래프 플로팅
- 9. matlab - 그래프 플로팅
- 10. Matlab : 반지 모양의 그래프
- 11. Matlab 기본 데이터 그래프
- 12. Matlab : 유향 그래프 플로팅
- 13. MATLAB - 다중 그래프 플로팅
- 14. Matlab 그래프 선들 유형
- 15. 페이스 북 그래프 API가 Facebook 프로필로 일관성없는 친구 수를 반환합니다.
- 16. Facebook 그래프 API는 항상 같은 공유 수를 반환합니다.
- 17. 피보나치 수를 사용하여 matlab
- 18. TCHart - 시리즈에 추가 한 점의 수를 얻습니다.
- 19. 주어진 거리보다 가까운 점의 수를 계산하십시오.
- 20. Matlab에서 점의 행을 그려야합니다.
- 21. 단어의 문자 수를 반환합니다.
- 22. arrayWithFile은 0의 수를 반환합니다.
- 23. 총 레코드 수를 반환합니다.
- 24. 주와 일 수를 반환합니다.
- 25. getCount가 이전 수를 반환합니다.
- 26. 연속 출력 및 불연속 연속 입력이있는 Matlab Data Acquisition
- 27. 특정 해상도의 MATLAB 그래프 저장
- 28. Matlab 그래프 이론 점근 복잡성
- 29. Matlab Simulink VI 그래프 플로팅
- 30. 팝업 메뉴와 그래프 포커스 Matlab
지금까지 무엇을 했습니까? 우리에게 보여주세요. 대표적인 이미지도 좋을 것이다 :) –
나는 현재 코드에 관해서는별로 없다. 그러나 내 생각에 -R에서 각 x와 y를 나타내는 R의 정수 범위를 가지며 x^2 + y^2
user2049004
@ user2049004 - 당신은 올바른 생각을 가지고 있습니다. 당신은 단지 당신의 좌표를 생성하는 올바른 기능을 알아 내야했습니다 :) 내 게시물을 참조하십시오. – rayryeng