본문 바로가기
유용한 지식/매트랩

매트랩 plot 함수 기본 및 은근히 자주 쓰는 팁

by 그래도_明 2020. 8. 1.

매트랩 plot 함수 기본 및 은근히 자주 쓰는 팁

 

매트랩의 꽃은 그래프 그리기가 아닐까 싶다.

평소 자주 쓰는 코드들을 공유할테니 자유롭게 긁어가서 수정하길.

1. 기본 코드

%% Setting
dt = 0.0001; % time step
t = 0:dt:0.08; % time
V = 220*sin(2*pi*60*t); % Data

%% Plot
plot(t,V)

설명을 위해 220V, 60Hz 전압을 그려보았다.

둘 째줄에 있는 dt는 그래프의 time step으로 얼마의 간격으로 그래프에 점을 찍을 것인가에 관한 간격이다. 해상도와 같은 개념이라 생각하면 편하다. 만약 time step이 너무 짧으면 실행 시간이 오래 걸리게 되고, 반면 너무 길면 그래프가 일그러질 수 있으니 선정에 주의해야한다. 보통 "그래프가 이상하게 나와요"의 대표적인 원인이니 알아두자.

 

셋 째줄의 t는 0초부터 dt의 간격으로 0.08초까지 배열을 만들어달라는 뜻이다. 보통 x축의 값으로 쓰이는데 x축 값을 위해서는 행렬(1 X n) 형태로 표현되어야 한다.

 

넷 째줄의 V는 y축 값이며, x축 값의 행렬과 동일한 크기여야 오류가 나지 않는다.

 

마지막 줄은 그래프를 그리는 plot 함수이며 x축과 y축 행렬을 순서대로 넣으면 된다.

<기본 코드 결과 그래프>

2. 그래프 색 및 선 스타일 변경

%% Color and Style of Graph
plot(t,V,':r')

앞서 사용한 Setting 변수들을 사용하여 계속 설명하였다.

위 코드는 t에 따른 V를 빨간 점선으로 표현함을 의미한다. 즉 저 코드처럼 아래 표를 참고하여 필요한 명령을 입력하면 된다.

명령 선 모양
- 실선
-- 파선
: 점선
-. 일점 쇄선

명령 선 색
m 자홍색
c 녹청색
r 빨간색
g 녹색
b 파란색
w 흰색
k 검은색
y 노란색

<그래프 색 및 선 스타일 변경 결과 그래프>

3. 표시 범위 변경

%% Range Method 1
figure(1)
plot(t,V)
xlim([0 0.04])
ylim([-600 600])

%% Range Method 2
figure(2)
plot(t,V)
axis([0 0.04 -600 600])

그래프 범위를 바꾸는 방법도 여러가지가 있다. 두 방법 모두 x축은 0부터 0.04까지, y축은 -600부터 600까지 범위로 수정해 보았다. 결과는 다음과 같이 모두 동일하다.

4. 그래프 겹쳐 그리기

%% Setting
V1 = 220*sin(2*pi*60*t);
V2 = 220*cos(2*pi*60*t);

%% Overlapping Graphs Method 1
figure(1)
plot(t,V1,'r',t,V2,':b')

%% Overlapping Graphs Method 2
figure(2)
plot(t,V1,'r')
hold on
plot(t,V2,':b')
hold off

두 개 이상의 데이터를 한 화면에 비교하고 싶을 때 유용한 기능이다.

나는 주로 위 두 방법을 사용한다.

첫 번째 방법은 그냥 plot함수에 이어서 적어주면 된다.

두 번째 방법은 'hold on'이라는 명령을 이용하는 방법인데 먼저 그래프 하나를 그리거나 figure 창을 띄워놓고 hold on 명령을 입력하면 앞서 그려 놓은 그래프가 리셋되지 않는다. 이때 hold off를 안하면 계속해서 그래프가 겹쳐지기 때문에 마지막에 꼭 hold off 명령을 입력하는 습관을 들이도록 하자.

두 방법 모두 장단점이 있다. 만약 겹쳐서 그려야할 그래프가 적다면 첫 방법이 간단하지만 그래프 수가 늘어날수록 두 번째 방법이 더 직관적이다.

참고로 figure(1)이나 figure(2) 명령은 그래프 창을 괄호 번호에 맞게 새롭게 띄워주는 기능이다. 

 

<그래프 겹쳐 그리기 결과 그래프>

5. 그래프 꾸미기

%% Decorating Graphs
plot(t,V1,'-r',t,V2,':m') % two graphs
title('Simulation Result') % graph title
xlabel('time [s]') % x-axis title
ylabel('Voltage [V]') % y-axis title
legend('sin','cos') %legend
grid on % grid

앞선 코드에 이어 V1과 V2가 모두 표시된 그래프를 이용하여 설명하였다.

title은 전체 그래프의 이름을, xlabel은 x축 이름을, ylabel은 y축 이름을, legend는 범례를 의미하며, grid on은 그리드를 그려준다. 만약 원하지 않으면 grid off로 표시하지 않을 수 있다.

<그래프 꾸미기 결과 그래프>

 

반응형

댓글