我有一個嵌入式系統,它以1毫秒的間隔生成樣本(16位數字)。可變的上行鏈路帶寬最多可以每5ms傳輸一次採樣,所以我想尋找方法來自適應地降低數據速率,同時最大限度地減少重要信息的損失 - 在這種情況下是時間間隔中的最小值和最大值。可變帶寬數據鏈接的日誌數據縮減
我認爲應該工作的方案涉及稀疏編碼和有損壓縮的變體。像這樣:
- 系統將在10ms間隔內存儲最小值和最大值。
- 系統將在內部排隊這些數據對中的有限數量(如50)。
- 不允許損失最小值或最大值,但它們發生的時間間隔可能會有所不同。
- 當隊列滿時,相鄰數據對將從隊列末尾開始合併,以便轉換後的最小/最大值對現在表示20ms間隔。
- 該方案應該是迭代的,以便進一步的時間間隔結合到40ms,80ms等在必要時完成。
- 該方案應該在隊列長度上進行線性加權,以便不存在最新數據的組合和最舊數據的最大必要組合。
例如長度爲6的隊列中,連續的數據減少應導致數據對,以覆蓋這些間隔:
initial: 10 10 10 10 10 10 (60ms, queue full)
70ms: 10 10 10 10 10 20
80ms: 10 10 10 10 20 20
90ms: 10 10 20 20 20 20
100ms: 10 10 20 20 20 40
110ms: 10 10 20 20 40 40
120ms: 10 20 20 20 40 40
130ms: 10 20 20 40 40 40
140ms: 10 20 20 40 40 80
新樣品在左邊添加,數據從右側讀出。
這個想法顯然落入有損壓縮的類別和稀疏編碼。
我認爲這是一個在上行鏈路帶寬有限的數據記錄應用中經常出現的問題,因此可能會出現一些「標準」解決方案。
我故意簡化並省略了其他問題,如時間戳。
問題:
- 是否有已經算法,它做這種數據記錄的?我不是在尋找標準的,有損圖像或視頻壓縮算法,而是如上所述的更特定於數據記錄的東西。
- 什麼是最適合隊列的實現?鏈接列表?樹?
謝謝。我應該更具體。很明顯,我最初的算法忽略了單個樣本,但它從不鬆動最小值和最大值。它也可以被看作是「稀疏編碼」的一種形式。 – 2013-04-30 23:34:11