簡體   English   中英

從命令行管道將數據饋入倍頻程圖

[英]Feeding data into octave plot from a command-line pipe

我有一個關於八度實時繪圖的問題。 這個想法很簡單,但是不幸的是我無法在互聯網上找到解決方案。 在我的項目中,我正在使用netcat采樣數據,並使用awk進行過濾,例如:

nc 172.16.254.1 23 | awk ' /point/ '

這樣,我每4-10毫秒(大約)獲得一個新的數據點以及一個時間戳。 現在,我想將此數據通過管道傳輸到八度並實時繪制。 有人有什么想法嗎?

更新

在我看來,這

nc 172.16.254.1 23 | awk ' /point/ ' | octave --silent --persist --eval "sample(stdin)"

將數據通過管道傳遞到我的八度腳本sample ,該sample進行繪圖。 但是現在仍然存在一個問題:重繪的速度遠遠不夠,並且在數據采樣期間速度變慢了(我得到了數千個數據點)。 我有

function sample(stream)
t = NaN; r = NaN; k = 1;
figure(1)
plot(t,r,'o')
hold on
while(~feof(stream))
     s = fgets(stream);
     t(k) = str2double(s(1:6));
     r(k) = str2double(s(8:11));
     plot(t(k),r(k),'o')
     drawnow()
     k = k + 1;
end

我應該添加/更改什么?

經過研究,feedgnuplot似乎滿足了我實時繪圖的目的:

nc 172.16.254.1 23 | 
awk ' /point/ ' | 
feedgnuplot --domain --points --stream 0.01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM