2012-02-18 5 views
1

パリティチェックサム方式とReed-Solomon Erasure Correctionを使用して、いくつかのバイトのサウンドをエンコードおよびデコードする作業があります。 私は最初の方法(パリティチェックサム)のエンコードを行っていますが、リードソロモン消失訂正による検出である2番目の方法を完了するのに役立つ必要があります。リードソロモン消去訂正を使用したフォワードエラー訂正

これまでのところ、RSコードはtシンボルをデータのkシンボルに追加しています。したがって、t/2のシンボルを見つけて修正したり、エラー位置がいわゆる消しゴムと呼ばれる場合は修正することができます。 tまで修正できます。この作業では、ガロア体GF(2 )を使用して各シンボルを1バイトとして表現する必要があります。操作の加減算はXORに基づいています。だから私は、最大でt=3までの訂正が可能なリードソロモンコードを使用しなければなりません。

C0 | C1 |........| Ck-1 | Ck | Ck+1 | Ck+2

に従うようにコードバイトがベクトルc=[c0,c1,...,ck+2] 及び単一コードCとして見ることができるように、今で単一リードソロモン符号の計算は、以下 d=[d0,d1,...,dk-1]としてデータのk個のバイトから計算され、そう私の符号化されていますおよび復号化プロセスは、私たちがを取得し、次のVandermonde行列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を使ってとても簡単行列ベクトル乗算を必要と。これまでのところ、私はエンコードのために何をしたか

は以下の通りである:

#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クラスを復号化するため、このコードを完了するためのコードが必要になります。できるだけ早くこの作業を完了するために、どんなヘルプも感謝します。事前

+0

フォーマットを修正してください – CAFxX

+0

具体的な質問は何ですか? –

+0

には、Reed-SOlomon Erasure Correctionを使用してエラー検出を終了するためのコードを完成させるコードが必要であり、同じメソッドを使用してデコードするコードも必要です。 – Fox

答えて

0

あなたは私のRS(255255-K)my homepageから入手可能であるC-の実装を見てとることができますで

感謝。

は、これは、両方のエラーや消去を処理し、補正によって囲まれ、任意のバイトエラー/消去パターン:

(2 * ERRORCOUNT + erasureCount)< = K。

0

Wikiversityの良いチュートリアルがあり、消去とエラーの両方を扱う方法が詳しく説明されています。

  1. 計算症候群:ここ

    は、あなたがプロセスをデコード消去するために実装するために必要なものの概要です。次に、すべての係数が0であるかどうかを確認します。メッセージには訂正は必要ありません。
  2. シンドロームと消去位置を入力としてForneyアルゴリズムを呼び出して、消失量多項式(すなわち、メッセージ多項式から元のメッセージを戻す値)を計算します。
  3. 元のメッセージを復元するには、message - erasure_magnitude_polynomialを減算します(シングルトンの範囲内の場合)。

ビットが関係する可能性があるフォーニーアルゴリズム以外に、他のすべての部分は非常に単純で簡単です。確かに、Berlekamp-MasseyアルゴリズムやChien検索などの最も困難な部分は、エラーを解読したい場合にのみ必要であり、Forneyシンドローム計算は、消去とエラー(つまり正誤表)の両方を修正したい場合にのみ必要です。 Forney症候群の計算をバイパスすることができると書かれた論文を読んだことがありますが、そのようなコードは見たことがありません。

関連する問題