이번에는 매트랩으로 간단하게 그래프 그리기를 연습해보려 한다. 색 변화, 점선, 실선 등 구체적인 변화들은 추후 자세한 version 으로 작성해볼 것이고 이번에는 매트랩으로 코드 작성하여 표현하고 싶은 그래프를 그려보는 연습을 해보겠다.
일단 매트랩 코드를 작성할 때 유의해야 할 부분은 세미콜론(;) 이다. 코드들은 enter 키 후에는 지우지 못하므로 신중하게 작성해야 한다. 코드를 짜고 아직 실행하지 않으려 했는데 enter를 누르면 다른 언어 프로그램들과 달리 바로 실행되므로 코드 작성을 계속하려는 상태에서 줄바꿈을 하려면 꼭 마지막에 세미콜론(;)을 붙여야 한다. 예시로 쫌 더 살펴보도록 하겠다.
결국 세미콜론 붙이면 --> 실행은 되지않고 줄바꿈만, 세미콜론 없이 enter --> 코드 실행 이렇게 된다.
함수의 그래프를 그리기 위한 코드는 플롯(plot) 부분에서 코드를 작성하면 된다.

우리가 2차원 그래프를 그릴 때 continuous-time 은 plot() 함수를 사용하고 discrete-time 은 stem() 함수를 사용하게 된다. 지금은 계속 이어진 일반적인 그래프를 그릴 것 이므로 plot() 함수를 사용하면 된다.
plot(x, y) 라고 쓰고 인자 x, y 는 각각 1차원 배열인 벡터이다. 그냥 간단하게 함수를 그릴 때의 x, y 라고 보면 된다.
이제 직접 사인함수를 그려보자
>> x = [-10:0.01:10};
>> y=sin(x);
>> plot(x, y)
이렇게 작성하면 -10부터 10까지 0.01의 차이의 범위라고 간단하게 생각하면 된다. 세미콜론(;)은 마지막에 위 코드를 실행하는 plot(x,y) 뒤에만 붙이지 않는다. 이렇게 코드를 짜면

이렇게 나타나게 된다. 다음 함수를 그리기 위해 코드창을 비우는 방법은
>> clear
>> clc
이렇게 두개를 해주면 된다. clear는 해당된 미지수에 대한 값들을 지우고 clc는 코드들을 다 지워버리는 것이다.
이제 사인함수와 코사인함수를 둘 다 그려보자.
>> t = [0:0.01:4*pi]; % pi 는 우리가 아는 그 3.14 파이다.%
>> sin_function = sin(t);
>> cos_function = cos(t);
>> plot(t,sin_function,t,cos_function)
이렇게 해주면 아래와 같이 그려지게 된다. 유의할 점은 t에서 만약 [0:0.1:4*pi] 처럼 0.01 이 아니라 0.1 이 되면 x값과 y 값의 길이가 달라져서 제대로된 plotting 이 불가능해진다.

또한 그래프를 코드로 작성할 때의 주의점을 써보라면 정의역 x는 벡터의 형태로 표현되는 경우가 많으므로 그냥 ^ 를 사용하면 벡터의 거듭제곱(곱셈)을 할 때 오류가 날 수 있다. 따라서 행렬에서 각 성분끼리 곱해주는 .^ 를 사용하면 의도하는 그래프를 작성할 수 있을 것이다.
추가로 y=f(x) 형태로 함수를 코드로 표현할 때 다른 부분은 어느정도 다 2x^2, 4x+7 이렇게 키보드로 할 수 있지만 자연상수를 밑으로 가지고 있는 함수, 즉 e^x 꼴의 함수는 exp(x) 로 표현된다. 그러면 e^(-2x) 는 exp(-2x) 로 표현하게 된다.
마지막으로 periodic rectangular waveform 즉 직각 모양의 주기함수를 그려보자. 이 periodic rectangular waveform 은 처음 그릴 때 매우 햇갈리므로 코드와 함께 옆에 %로 설명을 쓰자면 이렇게 쓸 수 있다.
w=50 % positive signal width in percentage
F=1 % signal frequency
T=1/F % signal period
w0=2*pi*F % signal pulse
ts=T/50 % sample time
np=2 % number of period = np*2
t=-np*T:ts:np*T; % time vector allowing np*2 period
y=square(w0*(t-T*w/200),w);
plot(t,y)

이렇게 매트랩을 이용해 간단하게 그래프를 그려보는 법을 익혔다. 앞으로도 매트랩을 이용한 여러 함수와 수식들을 다뤄보겠다.
| #2 매트랩 배열 - 1차원 배열(벡터)의 생성 (0) | 2021.06.10 |
|---|---|
| #2 현대물리학 - 상대론적 도플러 이동(효과) (0) | 2021.03.29 |
| #1. 매트랩(MATLAB) 입문 - 처음 사용방법 및 규칙들 (0) | 2021.03.29 |
| #1 인터스텔라 물리학) 나이 차이가 생기는 이유, 쌍둥이 역설 (0) | 2021.03.23 |
| 트랜지스터, 바이어스 전압 (0) | 2021.03.16 |
댓글 영역