數(shù)據(jù)壓縮技術(shù)在電力系統(tǒng)通信中的應(yīng)用
隨著微型計(jì)算機(jī)與通信技術(shù)的發(fā)展與日益成熟,一大批新型的電力系統(tǒng)故障錄波裝置和SCADA系統(tǒng)源源不斷地被引入電力系統(tǒng),由微波信道(或電力載波、公用電話線等信道)將大批量數(shù)據(jù)傳送到電網(wǎng)調(diào)度中心,是目前廣為采用的方法。波特率不可能太高,所需通信時(shí)間太長(zhǎng)的問(wèn)題已成為一大難題。解決這一難題的有效途徑是數(shù)據(jù)的壓縮與解壓技術(shù),即將發(fā)送端待傳輸?shù)臄?shù)據(jù)進(jìn)行壓縮,而接收端將接收到的壓縮數(shù)據(jù)解壓以獲得原始數(shù)據(jù)。如傳輸電力系統(tǒng)某一波形數(shù)據(jù)文件的長(zhǎng)度為23 376字節(jié),若不采用壓縮而直接傳輸,所需時(shí)間為40 min,若采用自適應(yīng)的哈夫曼數(shù)據(jù)壓縮與解壓技術(shù)壓縮后再傳輸,需22 min左右(與波形數(shù)據(jù)有關(guān))。
其次,盡管計(jì)算機(jī)存儲(chǔ)器的價(jià)格有降低的趨勢(shì),但在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,數(shù)據(jù)存儲(chǔ)仍然占有相當(dāng)大的額外費(fèi)用。因此,在數(shù)據(jù)庫(kù)系統(tǒng)中,對(duì)數(shù)據(jù)進(jìn)行壓縮是減少數(shù)據(jù)存儲(chǔ)費(fèi)用和提高性能的一個(gè)很有效的辦法。
數(shù)據(jù)壓縮技術(shù)方法很多,本文論述一種比較實(shí)用的自適應(yīng)哈夫曼數(shù)據(jù)壓縮與解壓方法,該方法已被故障錄波器所采用。
1 自適應(yīng)哈夫曼數(shù)據(jù)壓縮與解壓原理
哈夫曼編碼技術(shù)是一種比較常用的變長(zhǎng)編碼方法,最早由Huffman D提出。它采用的是一種優(yōu)化靜態(tài)編碼方法,由該算法產(chǎn)生的二叉樹(shù)具有最小的加權(quán)長(zhǎng)之和∑WjLj,其中Wj是哈夫曼樹(shù)中第j個(gè)葉結(jié)點(diǎn)的重量,Lj為該葉結(jié)點(diǎn)到樹(shù)根的距離。靜態(tài)哈夫曼方法的最大缺點(diǎn)就是它需要對(duì)原始數(shù)據(jù)進(jìn)行兩遍掃描:第一遍統(tǒng)計(jì)原始數(shù)據(jù)中各字符出現(xiàn)的頻率,利用得到的頻率值創(chuàng)建哈夫曼樹(shù)并將樹(shù)的有關(guān)信息保存起來(lái),便于解壓使用;第二遍掃描則根據(jù)前面得到的哈夫曼樹(shù)對(duì)原始數(shù)據(jù)進(jìn)行編碼,并將編碼信息存儲(chǔ)起來(lái)。此法如果用于網(wǎng)絡(luò)通信中,將會(huì)引起較大的延時(shí)。
針對(duì)上述問(wèn)題,F(xiàn)aller等人提出了自適應(yīng)即動(dòng)態(tài)哈夫曼編碼方法,它對(duì)數(shù)據(jù)編碼的依據(jù)是動(dòng)態(tài)變化的哈夫曼樹(shù),也就是說(shuō),對(duì)t+1個(gè)字符編碼是根據(jù)原始數(shù)據(jù)中前t個(gè)字符得到的哈夫曼樹(shù)來(lái)進(jìn)行的。壓縮與解壓子程序具有相同的算法修改哈夫曼樹(shù),因而該方法不需要為解壓而保存樹(shù)的有關(guān)信息。壓縮與解壓一個(gè)字符所需的時(shí)間與該字符的編碼長(zhǎng)度成正比,因而該過(guò)程可以實(shí)時(shí)進(jìn)行。
自適應(yīng)哈夫曼編碼的關(guān)鍵,就是如何將前t個(gè)字符的哈夫曼樹(shù)調(diào)整成一棵前t+1個(gè)字符的哈夫曼樹(shù)。為了解決上述問(wèn)題,我們分兩步進(jìn)行。
第一步, 我們把前t個(gè)字符的哈夫曼樹(shù)轉(zhuǎn)換成它的另一種形式, 只需在該樹(shù)第二步中簡(jiǎn)單地把由根到葉結(jié)點(diǎn)ait+1路徑上的所有結(jié)點(diǎn)重量加1, 就可以變成前t+1個(gè)字符的哈夫曼樹(shù)。 其過(guò)程就是以葉結(jié)點(diǎn)ait+1為初始的當(dāng)前結(jié)點(diǎn), 重復(fù)地將當(dāng)前結(jié)點(diǎn)與具有同樣重量的序號(hào)最大的結(jié)點(diǎn)進(jìn)行交換,并使后者的父結(jié)點(diǎn)成為新的當(dāng)前結(jié)點(diǎn),直到遇到根結(jié)點(diǎn)為止。
第二步通過(guò)將根到葉結(jié)點(diǎn)ait+1路徑上的所有結(jié)點(diǎn)重量加1, 該樹(shù)就變成了前t+1個(gè)字符的哈夫曼樹(shù)。
2 自適應(yīng)哈夫曼編碼及解碼流程及其說(shuō)明
自適應(yīng)哈夫曼編碼流程如圖1所示,其解碼流程如圖2所示。
圖1 自適應(yīng)哈夫曼編碼流程
評(píng)論