상세 컨텐츠

본문 제목

매트랩(matlab) 으로 그래프 그리기 (간단한 ver.)

study/Physics

by 세미531 2021. 4. 6. 00:01

본문

728x90

이번에는 매트랩으로 간단하게 그래프 그리기를 연습해보려 한다. 색 변화, 점선, 실선 등 구체적인 변화들은 추후 자세한 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) 뒤에만 붙이지 않는다. 이렇게 코드를 짜면

sin 함수

이렇게 나타나게 된다.  다음 함수를 그리기 위해 코드창을 비우는 방법은

>> 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 이 불가능해진다.

sin, cos 함수

 

또한 그래프를 코드로 작성할 때의 주의점을 써보라면 정의역 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)

periodic rectangular waveform

 

이렇게 매트랩을 이용해 간단하게 그래프를 그려보는 법을 익혔다. 앞으로도 매트랩을 이용한 여러 함수와 수식들을 다뤄보겠다.

728x90

관련글 더보기

댓글 영역