본문 바로가기
MATLAB

다섯 번째

by 파치카 2020. 7. 10.

이번엔 MATLAB의 꽃인 plotting에 대해 알아보자.

 

그래프를 그릴 때에는 input 과 output, 혹은 x 와 y가 있어야한다.

 

어떤 값에 대응하는 값이 없다면 그래프를 그릴 수가 없으니까.

 

간단간단하게 훑어보자.

 

x = [1 2 3 4 5 6 7 8  9 10];

y = sin(x);

plot(x,y) 를 입력해서 실행하면 다음과 같이 나온다.

 

 

MATLAB에서 그래프를 그리는 명령어는 plot이다

 

명령어 구조는 plot( x 축 값, y 축 값) 이렇게 된다.

 

엄청나게도 간단하다.

 

이번엔 sin(x) 와 cos(x)를 둘 다 그려보자.

 

다음과 같이 코드를 넣어주면

 

 

sin(x) 는 어디가고 cos(x) 그래프만 나온다.

 

만약에 sin(x)와 cos(x) 그래프를 둘 다 그리고 싶다면

 

hold on 커맨드를 이용하면 된다.

 

 

 

 

보라. hold on 을 넣어주니 그래프가 두 개가 생겼다.

 

hold on 명령어가 상당히 편한게, 딱 한 번만 쓰고 hold off 를 쓰기 전까지 그래프를 한 곳에 넣어준다.

 

 

 

그래프 4개가 한꺼번에 그려진 모습이다.

 

hold off는 까먹고 예제를 안 올렸는데 그냥 그래프 다른 곳에 나오게 하려면 hold off 쓰면 됨.

 

그렇다면 hold off를 쓰지 않고 그래프를 따로따로 나오게 하는 방법은 뭘까?

 

그건 figure 명령어를 쓰면 된다.

 

그래프가 그려진 창의 이름을 보면 알겠지만 Figure 1, Figure 2 로 되어있다.

 

따로따로 나오게 하려면 plot 명령어 이전에 figure 명령어를 넣어주면 된다.

 

그냥 figure만 적으면 close all 없을 시에 릴 때 마다 그래프가 새로운 창으로 나오게 된다.

 

그래서 figure(숫자) 로 적으면 close all이 없더라도 돌릴 때마다 창이 늘어나지 않게 된다.

 

아주 개꿀인 것이다.

 

주의할 점은

figure(1)

plot

figure

plot

figure(2)

plot

 

이런 식으로 하게 되면 figure 창은 절대로 뜨지 않게 된다.

 

그니까 번호 메기면서 하는 게 제일 쉽고 안전하다.

 

그러면 이번에는 다른 그래프를 그려보자.

 

x = [1 2 3 4 5 6 7 8 9 10];

y = x^2;

 

을 그려본다고 한다면 밑에처럼 적기마련이다.

 

 

 

 

 

하지만! 당연히 그려지지 않는다.

 

왜냐면 x 는 1 X 10 인 가로벡터인데

 

곱해지려면 10 X 1 이 있어야 하는데 지금 내가 적은 식은

 

[1 X 10] 곱하기 [1 X 10] 이므로 당연히 안된다.

 

해결 방법은 여러가지 있는데

 

y = x * x' 로 한다던가 아니면 그냥 y = x.^2 로 하면 된다.

 

더 있는데 귀찮음.

 

y = x.^2 로 바꾼 모습.

 

흔히 보이는 그래프다.

 

행렬의 곱이나 나눗셈이 온점 없이도 가능한지 잘 알아보고 적도록.

 

또 다른 예제를 해보자.

 

간단한 문제인데

 

속도가 40km/h 인 차량이 3m/s^2 의 가속도로 10초간 간다면

 

10초가 지나고 난 뒤 차량의 속도는 몇인가?

 

라는 문제다.

 

그럼 우리는

 

V_f = V_i + a*t

 

공식을 써서 그래프를 그리면 된다.

 

짜잔.

 

아 시간이 0초 일 때 넣는 걸 깜빡했다.

 

t = 0:1:10; 이어야하는데 실수함. 아무튼 맞으면 됐지.

 

그나저나 나처럼 모눈종이에 그린 것처럼 그래프가 그려진 걸 좋아하는 사람들이 있는데

 

그런 사람들을 위해서 MATLAB안에 grid 라는 명령어를 넣어놓았다.

 

plot 명령어를 적고 다음 줄에

 

grid on

 

이라고 적어주면 다음과 같이 그래프가 변한다.

 

 

 

참으로 보기 깔끔하다.

 

나는 grid on 을 거의 무조건 쓰는 편이다. 쓰면 그냥 뽀대남.

 

그런데 다른 사람들이 보기 쉽게

 

x 축과 y 축이 어떤 걸 뜻하는지 알려줘야 할 때가 있는데

 

그럴 때면 xlabel 과 ylabel 명령어를 써주면 된다.

 

 

 

이렇게 xlabel('X축이름') ylabel('Y축이름') 으로 적어주면 된다.

 

xlabel 과 ylabel 명령어는 숫자가 아닌 문자가 쓰이기 때문에 ' '를 무조건 넣어줘야 한다.

 

아 저번에 이거 안했네. 아무튼 지금이라도 알면 됐음.

 

 

 

참고로 내 건 영문버전이라서 한글인식이 안됨. 그래서 영어 쓰는거.

 

아무튼 이번엔 뽀대나게 무슨 그래프인지 한 눈에 알려주는 제목을 넣어보자.

 

제목은 title 명령어를 이용해서 넣는데

 

xlabel 과 ylabel 과 마찬가지로 문자를 넣기 때문에 ' ' 를 잊지 말고 넣어줘야 한다.

 

 

이렇게 나온다. 훨씬 더 보기 좋음.

 

이번엔 차량의 속도가 45km/h 이고 2.5m/s^2 의 가속도로 10초간 달릴 때 10초 후의 속도는 몇인지도 같이 그려서 비교해보자.

 

숫자만 다르지 같은 문제이기 때문에 생략함.

 

 

깔끔하게 나온다.

 

근데 X축 Y축 제목까지 다 적어놨지만 이렇게 두 개의 그래프가 함께 있을 때 어떤게 어떤 것인지 모를 수도 있기 때문에 친절하게 알려줘야 한다.

 

이럴 때는 legend 명령어를 사용하면 된다.

 

아 그리고 plot 명령어를 쓸 때 y 값의 갯수가 같다면

 

plot(x,y,X,Y)

이런 식으로 plot 명령어 하나에 두 개를 적어서 그릴 수가 있다.

 

나도 예전엔 이렇게 했는데 은근 까다로워서 안 쓰고다님. 비추.

 

 

 

아무튼 legend 명령어 역시 문자를 쓰기 때문에 ' '를 잊으면 안된다.

 

그리고 legend 명령어는 그래프 그릴 거 다 그리고 난 뒤에 적어줘야 한다.

 

안 그러면 제대로 작동 안 함. 그리고 그래프 갯 수보다 적어도 되는데 많으면 안됨.

 

아무튼 대충 이렇게 나온다. 근데 legend 가 그래프를 가린다. 이럴 땐 어떡하냐하면 legend 를 이동시켜주는 명령어를 쓰면 된다.

 

legend 명령어 안에 몇 개만 추가해주면 되는데 그리 어렵진 않다.

 

이름 붙일 거 다 적고 난 뒤에 'location','위치' 만 추가해주면 끝!

 

 

 

나는 밑 코너쪽에 박아두고 싶어서 southeast 를 적었다.

 

다른 위치에 보내고 싶다면 help legend 를 실행시켜서 찾아보면 된다.

 

 

 

 

 

다음엔 뭘 하지.

'MATLAB' 카테고리의 다른 글

전기 시스템 모델링  (0) 2020.09.04
네 번째  (0) 2020.07.10
세 번째  (0) 2020.07.10
두 번째  (0) 2020.07.10
글 옮기는 중  (0) 2020.07.10

댓글