이전 포스트들에서 설명한 plot(a,b) 명령어에서는 a벡터를 x축에, b벡터를 y축에 선형 스케일로 2차원 그래프를 그린다. 수학이나 공학에서는 넓은 영역의 값을 한 그래프에 나타내기 위해 때때로 로그 단위의 그래프를 그릴 필요가 있다. 특히 주파수를 기본 축으로 하는 함수에서는 그 값이 일반적으로 log 단위로 표시되는데 이때 사용되는 명령어로는 아래와 같이 semilogx(), semilogy(), loglog() 등이 있다. 그리고 극좌표 스케일의 그래프를 그릴 때는 polar() 함수를 사용한다.
[표 1] 로그 스케일 그래프를 생성하는 함수
loglog(a,b)
|
x축과 y축 모두 로그 스케일인 그래프 생성
|
semilogx(a,b)
|
x축만 로그 스케일인 그래프 생성
|
semilogy(a,b)
|
y축만 로그 스케일인 그래프 생성
|
polar(a,b)
|
극좌표 그래프를 그린다
|
예를 들어 다음의 식을 고려해보자.
먼저 x축의 값인 주파수를 로그단위로 나타내 보자. 함수 logspace()를 사용하면 일정한 상용 로그값 차이를 갖는 벡터를 만들어 준다.
>> w = logspace(-1,2,100)>> H = 1 ./(1+w.^2).^0.5>> semilogx(w,H)>> grid on |
벡터 w에는 10-1(rad/sec)에서 102 (rad/sec)까지의 값을 100등분하여 로그값을 저장한다. 즉, logspace() 함수는 다음과 완전히 동일하다.
>> w = 10.^linspace(-1,2,100)
|
x축을 log 스케일로 그리는 그래프는 semilogx() 함수를 이용하면 된다.
[그림 1] 실행 결과 (gnu octave 실행 결과를 캡쳐)
polar()함수는 극좌표계의 그래프를 그려준다. 입력 인수로 거리와 각도를 각각 받는다. 즉 polar(r, a) 에서 r은 거리의 벡터, a는 각도(단위는 라디안)의 벡터로 주어져야 한다.
>> polar(0:10, 0:10)
|
[그림 2] 실행 결과 (gnu octave 실행 결과를 캡쳐)
polar()함수가 그림을 그리는 원리는 plot()함수와 동일하다. (거리, 각도) 쌍의 점을 찍은 후 그것들을 선으로 이어주는 것이다. 선의 색/모양을 지정하는 방법은 polt()함수와 동일하다.
>> t=linspace(0,pi,100)>> polar(sin(t), cos(t)) |
[그림 2] 실행 결과 (gnu octave 실행 결과를 캡쳐)
이렇게 MATLAB에서 로그스케일 그래프와 극좌표 그래프를 쉽게 생서할 수 있다.
댓글 없음:
댓글 쓰기