我有使用奇偶校驗和方法編碼和解碼一些字節的聲音的任務,並且Reed-Solomon Erasure Correction。 我已經完成了第一種方法(奇偶校驗和)的編碼,但需要幫助完成第二種方法,即通過Reed-Solomon擦除校正進行檢測。使用Reed-Solomon擦除校正的前向糾錯
到目前爲止我知道,RS代碼將t
符號添加到k
符號的數據。所以它能夠找到並糾正最多t/2
符號,或者如果錯誤位置已知所謂的刪除。它可以糾正高達t
。對於這個任務,我必須使用伽羅瓦域GF(2 )來將每個符號表示爲一個字節。操作加法和減法基於XOR。因此,在所有我必須採用裏德所羅門代碼,能夠糾正高達t=3
刪除。的單個Reed Solomon碼在現在作爲遵循
C0 | C1 |........| Ck-1 | Ck | Ck+1 | Ck+2
計算所以代碼字節可被視爲矢量c=[c0,c1,...,ck+2]
和單個碼C
從數據中的k字節計算爲遵循 d=[d0,d1,...,dk-1]
,所以我的編碼和解碼過程需要以下範德蒙矩陣F
1 1 12 13 ... 1k-1 1 2 22 23 ... 2k-1 ... 1 k+2 (k+2)2 (k+2)3 ... (k+2)k-1 1 k+3 (k+3)2 (k+3)3 ... (k+3)k-1
所以用一個簡單的矩陣向量乘法F
& D
我們得到C=F.D
。
迄今爲止我所做的編碼如下:
#else
void fox_encode(Buffer* bufin, Buffer* bufout, FoxEncData* algorithm_data){
// Your encoder for Task 2.C.3 goes in here !!!
while (bufin->size >= 1){
guint8 databyte = bufin->data[0]; //Pick up a byte from input buffer
buffer_push_byte (bufout, databyte); //Send it 3 times
buffer_push_byte (bufout, databyte);
buffer_push_byte (bufout, databyte);
buffer_pop (bufin, 1); //Remove it from the input buffer
}
}
#endif
我需要編寫代碼來完成這個代碼利用裏德 - 所羅門糾刪編碼和我fox_encode解碼和fox_decode類。任何幫助將不勝感激儘快完成這項任務。
在此先感謝
請更正格式 – CAFxX 2012-02-18 16:03:39
具體問題是什麼? – 2012-02-18 16:08:51
需要一個代碼來完成使用Reed-SOlomon擦除校正分離錯誤檢測的上述代碼,還需要使用相同方法進行解碼的代碼。 – Fox 2012-02-18 16:30:31