2015년 6월 30일 화요일

MATLAB의 plot()함수 (part 1)

 여기에서는 2차원 그래프를 작성하는데 많이 쓰이는 plot()함수의 사용법에 대해서 자세히 알아보도록 하겠다.(이후 예제는 gnu octave로 모두 실행 가능함) 먼저 다음 예제를 실행해 보자.

>> y=(-3:3).^3; 󰎠
>> plot(y); 󰎠
[그림 1] 실행 결과 (gnu octave 에서 캡쳐)
plot()함수는 입력 파라메터(일단은 벡터라고 가정한다)가 하나일 때는 x축에는 인덱스 값을, y축에는 그 입력 파라메터를 도시한다. 즉 위 예제의 경우
y = [ -27 -8 -1 0 1 8 27]
인덱스  1  2  3  4 5 6 7
이므로 이를 (x,y)쌍으로 나타내면 (1,-27), (2,-8), (3,-1), (4,0), (5,1), (6,8), (7,27) 이고 plot()함수는 이 위치에 점을 찍은 후 이들을 선으로 연결한다. [그림 1]을 자세히 관찰해 보면 이해가 갈 것이다. 만약 점들의 간격이 충분히 좁다면 마치 곡선처럼 보일 것이다.

>> y=(-3:0.1:3).^3;
>> plot(y) 󰎠

[그림 2] 실행 결과 (gnu octave 에서 캡쳐)

점과 점의 간격이 작기 때문에 마치 곡선처럼 보이지만 기본적인 원리는 앞에서 설명한 바와 같다.
 또 다른 예로서 한 주기 동안 시간 t와 시간함수인 사인 함수 y=sin(t)를 그래프로 그려보자. 먼저 기준 축인 시간함수의 벡터를 정해야 한다.

>> t = 0:0.1:2*pi ; %t축 데이터 생성
>> y = sin(t); %y축 데이터 생성
>> plot(t,y)
[그림 3] 실행 결과 (gnu octave 에서 캡쳐)

입력 파라메터가 두개인 경우 두 입력은 크기가 같은 벡터여야 하며 첫 번째 파라메터를 x축에 그리고 두 번째 파라메터를 y축에 대응시켜서 그래프를 그리게 된다.

>> x=-2:5;
>> y=exp(x);
>> plot(x,y)

위의 예에서 다음과 같은 행벡터들을 얻을 수 있다.
x=[ -2 -1 0 1 2 3 4 5]
y=[ 0.14 0.36 1 2.72 7.39 20.09 54.60 148.41]
따라서 plot()함수는 (x,y)순서쌍 (-2,0.14),  (-1,0.36), (0,1), (1,2.72), (2,7.39), (3,20.09), (4,54.60), (5,148.41)의 위치에 점을 찍은 후 이들을 서로 실선으로 연결하게 된다. [그림 4]에 결과가 도시되어 있다.

[그림 4] 실행 결과 (gnu octave 에서 캡쳐)
좀 더 부드러운 곡선을 얻기 위해서는 행벡터 x의 간격만 줄여주면 된다.

>> x=-2:0.01:5;
>> y=exp(x);
>> plot(x,y)
[그림 5] 실행 결과 (gnu octave 에서 캡쳐)


댓글 없음:

댓글 쓰기