2014-04-02 57 views
1

我有一個關於以八度爲單位的實時繪圖的問題。這個想法很簡單,但不幸的是我無法在互聯網上找到解決方案。在我的項目,我使用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,這確實繪圖。但是現在仍然存在一個問題:重新繪圖的速度遠慢,並且在採樣數據期間減慢(我得到數千個數據點)。我有

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 

我應該添加/更改什麼?

回答

0

經過一番研究,feedgnuplot似乎滿足我的實時繪製的目的:

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