요즘 엔지니어로 살아가기 참~ 힘이 듭니다. 왜냐구요? 해보고싶은게 너~~~무 많거든요. ㅎㅎㅎ 딥러닝도 해보고 싶고.. 그 유행한다는 자율주행도 익혀보고 싶고... 이것저것 전시회도 다녀보고싶고ㅠㅠ. 그러나 현실은... 해야할 일이 더~~~ 많다는 것이 문제지요. ㅎㅎ^^ 뭐~ 아무튼... 이것 저것 하다가.. 오늘은 MATLAB에서 3D 그래프를 그릴 때 보는 관점을 설정하는 view함수와 3D로 화살표를 멋지게 잘 그려주는 quiver3라는 함수를 소개할 까 합니다.^^ 두 함수를 모두 이야기할려구요. ㅎ^^
quiver3(0,0,0, 1,1,1)
위 한 줄 짜리 코드를 보면... 앞서 (0,0,0)은 벡터의 시작점이구요. (1,1,1)은 방향벡터입니다. 뭐 쉬운 이야기죠^^ 이 걸 실행하면
요딴 그림 하나를 얻을 수 있습니다. 이제.. view함수가 등장해야겠네요~~^^
출처 : MATLAB 공식 매뉴얼 http://kr.mathworks.com/help/matlab/ref/view.html?searchHighlight=view
일단 view함수의 가장 일반적인 사용옵션을 이용할려면은 위 그림을 이해하시면 됩니다.
quiver3(0,0,0, 1,1,1) xlabel('x') ylabel('y') zlabel('z') view(-45, 0)
똑같이 quiver3(0,0,0, 1,1,1)을 두고... 구분을 잘 하기 위해 x,y,z축 라벨도 달구요.. view함수로 Azimuth(방위각)을 -45로 해서 y축과 x축을 45도씩 바라보게 하고... Elevation(고도)를 0로 해서 z축을 바라보게 설정한 것입니다.
아하~~~ 요렇게 나오네요...^^ 이제 quiver3와 view 함수를 이야기했네요~~^^ 응?? 이렇게 마치면 좀 심심하니까.. 뭐 그림 몇 개 더 그려보죠&^^
quiver3(0,0,0, 1,0,0, 'Color', 'red', 'LineWidth', 2) hold on quiver3(0,0,0, 0,1,0, 'Color', 'green', 'LineWidth', 2) quiver3(0,0,0, 0,0,1, 'Color', 'blue', 'LineWidth', 2) xlabel('x') ylabel('y') zlabel('z') hold off view(45, 20) axis([-1.5 1.5 -1.5 1.5 -1.5 1.5])
위 코드는 원점(0,0,0)에서 x축, y축, z축 방향으로 크기가 1인 단위벡터를 각 색상을 R-G-B로 설정하고... 선의 두께(LineWidth)를 2로 설정하는 것입니다.
ㅎㅎ.. 괜찮네요~~^^ MATLAB의 공식 매뉴얼에 나오는 quiver3예제의 한 그림도 이야기해보죠
x = -3:0.5:3; y = -3:0.5:3; [X,Y] = meshgrid(x, y); Z = Y.^2 - X.^2; [U,V,W] = surfnorm(Z); figure quiver3(Z,U,V,W) view(-35,45)
이 예제는 x, y 변수를 이용해서 정방향 데이터(meshgrid)를 얻은 다음 Y^2 - X^2이라는 함수에 대입하여 얻은 Z값을 가지고 법선벡터를 찾아주는 함수(surfnorm)에 의해 U,V,W 벡터를 찾아서 그리는 것입니다.
ㅎㅎ 이쁘죠^^ 유체와 같은 흐름을 표현하기 괜찮은 아이이기도 하죠^^
'Software > MATLAB' 카테고리의 다른 글
MATLAB 2016a에 새로워진 대화형 작업에 유용할 것 같은 - 라이브 스크립트 - (4) | 2016.05.25 |
---|---|
MATLAB EXPO 2016에서 본 MATLAB2016a (8) | 2016.04.30 |
보고서용으로 사용할 가운데 축이 있는 그림 그리기 (2) | 2016.02.05 |
MATLAB에서 벡터나 공간을 표현하고 연습하기 좋은 drawLA Toolbox (8) | 2015.09.16 |
칼만 필터를 이용하여 위치에서 속도 구하는 예제 - 김성필 저, 칼만필터의 이해 - (43) | 2015.08.20 |
간단히 MATLAB을 이용하여 체비세프 ChebyShev 저역통과 필터 구현해보기 (8) | 2015.06.19 |
MATLAB에서 1차 저역통과필터를 구현해보자 (41) | 2015.06.11 |