2015-10-08 39 views
0

時間序列長無限期,但我希望能夠看看從開始時間t0到當前的時間階段t的情節。這意味着,該地塊的時間尺度是不斷萎縮如何繪製時間序列圖而不記住整個系列?

當然,我可以把所有的時間序列數據,並在每個時間步我只是重新繪製新規模的情節。但是如果內存也有限呢?

假設編程被允許僅保留N個的存儲器陣列(他們可以存儲他們想要的陣列中的任何數目)。

儘管使用有限的內存,程序員如何繪製一個保留真實圖形近似形狀的圖形?

回答

0

我發現一個簡單的解決方案,它可以繪製一個任意長的時間序列而不是忽略了開始部分。

訣竅是:當情節由1/2到達圖形,再分的整個圖形的右邊緣,並且把壓縮的曲線圖上的左半部分。然後從中點開始繪製。

通過反覆這樣做,圖表結束有一個「登錄」時間刻度,其中左側成倍壓縮,但用戶仍然可以看到的東西「形」在遙遠的過去。

該算法:

if (t > max_t)     // t is time index 
    // compress array by 1/2 
    for (i = 0 to arraySize) 
     a[i] = (a[i * 2] + a[i * 2 + 1])/2; 
    // start from mid-point 
    t = arraySize/2; 
    [ re-plot the graph from 0 to 1/2 arraySize ] 
else 
    [ plot the next datum normally ] 
    ++t 

實施例輸出(一個機器學習算法緩慢下降的錯誤):

enter image description here