DEEP.I - Lab

오프라인 공간의 지능화를 꿈꾸는 딥아이 연구실입니다.

Matlab

[Matlab] 매트랩을 이용한 실시간 그래프 그리기

Jongwon Kim 2020. 7. 5. 15:23
반응형

매트랩은 다양한 분야에서 분석하거 설계하는데 활용되고 있습니다. 직관적으로 데이터를 확인할 수 있어 데이터분석 입문으로 시작해도 좋다 생각합니다. 특히, 논문에 사용될 그래프를 도시화하는데 정말 쉽습니다!!! 저 역시, 석사 시절 주력으로 사용했습니다... 오늘은 데이터를 실시간 그래프로 업데이트하는 방법과 간단한 응용을 해보도록 하겠습니다.



1. for문을 이용한 난수 데이터 생성기


result = 0;                                 

for i = 1 : 1000      


result(i) = rand(1,1);

plot(result);           

drawnow;

% pause(1)


end               


핵심은 drawnow입니다. for문 안에서 그래프를 업데이트 할 수 있는 함수입니다. 시간 간격을 두고 업데이틑 하고 싶다면 drawnow 대신 pause() 함수를 사용하시면 됩니다. 예를 들어 1초간격으로 업데이트는 pause(1)를 입력해주시면 됩니다. 아래 영상의 좌측은 drawnow 우측은 pause(0.1) 기준으로 한 난수 데이터 생성기입니다.

      



2. 2개 이상의 데이터 값을 실시간 그래프로 확인하기 (sin 데이터와 난수 데이터)


dx = 0 : pi / 200 : 2 * pi


result_1 = 0;

result_2 = 0;                                 

for i = 1 : 1000      


cla


result_1(i) = randn(1,1);

plot(result_1);

hold on;

plot(result_2);           

drawnow;


% pause(1)


end               


하나의 plot에서 2개 이상의 그래프를 그리기 위해선 hold on을 선언해야합니다. hold on은 한 번만 호출해주시면 되지만, 실시간으로 업데이트 하는 과정에서 이전에 호출된 hold on으로 그래프가 누적되어 쌓이는 문제가 발생합니다. 이를 방지하기 위해 for문을 한 싸이클 돌았을때, plot의 모든 데이터를 제거해주는 cla를 선언해주시면 깔끔하게 생성됩니다. 좌측은 cla 없이 생성된 그래프이며 우측은 cla을 통해 기존 누적된 그래프를 제거해준 결과입니다.

      




# 머신러닝 프로젝트 제작, 상담 및 컨설팅  / 머신러닝 접목 졸업작품 컨설팅

# 데이터 가공, 수집, 라벨링 작업 / C, 파이썬 프로그램 제작

# email : deepi.contact.us@gmail.com

# site : www.deep-i.net




반응형