Julia에서 시계열 데이터를 실시간(기분 정도)에 그리기
7191 단어 ShellScriptJulia
소개
실험이나 데모를 하고 싶을 때, 취득한 신호를 그 자리에서 가시화하고 싶은 요구가 있다고 생각합니다.
예를 들어 Arduino IDE의 시리얼 플로터와 같은 좋은 느낌의 드로잉 소프트웨어가 이미 있습니다.
이번에는 csv 파일에 저장된 시계열 데이터를 그리기를 원했기 때문에 간단한 스크립트를 만들었습니다.
타이틀에 「기분 정도」라고 거절한 것은,
「데드 타임을 넘지 않는 것을 보증한다」리얼타임성은 전혀 고려하고 있지 않기 때문입니다.
그렇지만, 이러한 용도의 스크립트를 조사하려고 하면, 결국 「실시간 그리기」로 검색하겠지요
할 수있는 것
시도한 환경
Mac Book의 Ubuntu 20.04 (Virtual Box) + Julia 1.41
고집한 곳
시도한 환경
Mac Book의 Ubuntu 20.04 (Virtual Box) + Julia 1.41
고집한 곳
그리기 스크립트
SignalPlot.jl
using Plots
using CSV
gr(show = true)
function main()
# graph setting
Title = "time-series data"
Label = "random data"
XLabel = "time (s)"
YLabel = "number"
# sampling time
dt = 0.1
# graph width(number of plotting point)
width = 100
# declear x, y
x = dt:dt:dt*width
y = zeros(width,1)
x_offset = 0
for i in 1:500
data = CSV.read("tmp.csv",header=false)
datalen = length(data.Column1)
if datalen <= width
y[1:datalen] = data.Column1
else
y = data.Column1[end-(width-1):end]
x_offset = dt*(datalen-width)
end
display(plot(x + x_offset*ones(width,1),y,title = Title,label = Label,xlabel=XLabel,ylabel=YLabel))
end
end
덤: 데모에 사용한 난수 생성 스크립트
위의 드로잉 스크립트를 실행하기 전에 백그라운드 실행하십시오.
100 이하의 정수는 샘플링주기 0.1 초마다 csv 파일에 저장됩니다.
GenerateSignal.sh
#! /bin/bash
FILE=tmp.csv
if [ -e $FILE ]; then
rm $FILE
fi
while true
do
echo $(($(od -vAn -N1 -tu < /dev/urandom) % 101 )) >> $FILE
sleep 0.1s
done
결론
시계열 데이터를 바이너리 파일로 취급하면 좋을까 생각합니다.
참고
그래프를 그리는 방법 (stack overflow)
난수 생성 방법 (사적 비망록 님)
Reference
이 문제에 관하여(Julia에서 시계열 데이터를 실시간(기분 정도)에 그리기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/lxacas/items/4f0ab61e59981dcb3cdd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)