아래 포스팅에서 MATLAB에서 다각형 그리는 방법에 대해 설명드린적이 있는데요~
2014/04/09 - [programming language/MATLAB] - MATLAB 원(Circle), 다각형(Polygon) 그리기
오늘은 이렇게 만들어진 다각형 내부의 점들을 찾는 inpolygon() 함수에 대해 설명 드리려 합니다.
예를 다음과 같이 사각형을 하나 그려보죠~
xv=[-1 1 1 -1]; xv=[xv xv(1)];
yv=[1 1 -1 -1]; yv=[yv yv(1)];
plot(xv,yv), grid on
axis([-2 2 -2 2])
다음으로 정규분포를 갖는 랜덤 한 x, y 값들을 생성합니다. randn 함수에 대해서는 아래 포스팅 참조바랍니다.
2011/03/23 - [programming language/MATLAB] - MATLAB random number 생성
x = randn(256,1); y = randn(256,1);
(x,y)의 값들중에서 xv, yv 로 구성된 다각형 안에 있는 점들만 추려내기 위해서는 inpolygon함수를 사용합니다.
아래와 같이 사용가능합니다.
in = inpolygon(x,y,xv,yv);
inpolygon함수의 결과인 in 변수에는 x, y 좌표 중 xv,yv 로 구성된 다각형 내의 값들의 인덱스가 logical 값으로 표현됩니다.
MATLAB 에서는 logical 값들은 인덱스로 사용할 수 있으므로 다음과 같이 표현하면~ x, y 좌표 중 xv,yv 로 구성된 다각형 내에 있는 값들만 추릴 수도 있겠죠~
x(in),y(in)
반대로 x, y 좌표 중 xv,yv 로 구성된 다각형 내에 없는 값들만 추리기 위해서는 in 값에 ~(NOT) 을 붙여줘서 다음과 같이 할 수 있습니다.
x(~in),y(~in)
그럼 이제 위 설명들을 종합해서 x, y 좌표 중 xv,yv 로 구성된 다각형 내의 값과 그렇지 않은 값들로 구분해서 그래프를 그려 볼까요?
코드는 다음과 같습니다.
xv=[-1 1 1 -1]; xv=[xv xv(1)];
yv=[1 1 -1 -1]; yv=[yv yv(1)];
x = randn(256,1); y = randn(256,1);
in = inpolygon(x,y,xv,yv);
plot(xv,yv,x(in),y(in),'r+',x(~in),y(~in),'k>'), grid on
axis([-2 2 -2 2])
legend('Polygon','In Polygon', 'Out Polygon' )
'programming language > MATLAB' 카테고리의 다른 글
Matlab Sample Rate Conversion (0) | 2014.06.09 |
---|---|
MATLAB atan(), atan2() (0) | 2014.06.07 |
MATLAB Random Generation Seed 변경 (0) | 2014.05.06 |
구글 트랜드로 알아본 MATLAB의 관심도 (0) | 2014.05.04 |
MATLAB Communication Systems Reference Curves (0) | 2014.04.29 |
MATLAB PSK(Phase-shift keying) BER simulation (13) | 2014.04.17 |
MATLAB 원(Circle), 다각형(Polygon) 그리기 (11) | 2014.04.09 |
MATLAB sinc function (0) | 2014.04.08 |
댓글