1

パリティチェックサム方式とリードソロモン消去訂正を使用して、サウンドの一部のバイトをエンコードおよびデコードするタスクがあります。最初の方法 (パリティ チェックサム) のエンコードは完了しましたが、リードソロモン消去訂正による検出である 2 番目の方法を完了するには助けが必要です。

tこれまでのところ、RS コードはデータのシンボルにシンボルを追加することを知っていkます。t/2そのため、シンボルまで、またはエラーの場所がわかっている場合は、いわゆる消去を見つけて修正できます。まで補正できますt。このタスクでは、ガロア体 GF(2 8 ) を使用して、各シンボルをバイトとして表す必要があります。演算の加算と減算は XOR に基づいています。t=3そのため、全体として、消去まで修正できるリードソロモン コードを使用する必要があります。単一のリード ソロモン コードの計算は次のようになります。

C 0 | C 1 |.......| C k-1 | C k | C k+1 | C k+2

したがって、コードバイトはベクトルとして表示でき、次のように k バイトのデータから 単一のコードが計算されるため、エンコードおよびデコードプロセスには次のヴァンデルモンド行列 F が必要です。c=[c0,c1,...,ck+2]Cd=[d0,d1,...,dk-1]

1 1 1 2      1 3    ... 1 k-1 
1 2 2 2      2 3    ... 2 k-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

Reed-Solomon Erasure Correction を使用して fox_encode および fox_decode クラスをエンコードおよびデコードするために、このコードを完成させるコードが必要です。できるだけ早くこのタスクを完了するために、任意のヘルプをいただければ幸いです。

前もって感謝します

4

2 に答える 2

0

私のホームページから入手できる私の RS(255,255-k) C 実装を見ることができます。

エラーと消去の両方を処理し、以下によって制限されるバイト エラー/消去パターンを修正します。

(2*errorCount + erasureCount) <= k.

于 2015-01-05T22:22:11.380 に答える
0

ウィキバーシティには、消去とエラーの両方を処理する方法を詳しく説明した優れたチュートリアルがあります。

以下は、消去のデコード プロセスのために実装する必要があるものの概要です。

  1. シンドロームを計算します。次に、係数がすべて 0 かどうかを確認します。メッセージを修正する必要はありません。それ以外の場合は続行します。
  2. シンドロームと消失位置を入力としてフォーニー アルゴリズムを呼び出し、消失の大きさの多項式 (つまり、元のメッセージを取り戻すためにメッセージ多項式から減算する値) を計算します。
  3. 減算message - erasure_magnitude_polynomialして元のメッセージを復元します (シングルトン バウンド内の場合)。

少し複雑な Forney アルゴリズムを除けば、他のすべての部分は非常に単純明快です。実際、Berlekamp-Massey アルゴリズムや Chien 検索などの最も難しい部分は、エラーをデコードする場合にのみ必要であり、Forney シンドロームの計算は、消去とエラー (つまりエラッタ) の両方を修正する場合にのみ必要です。フォーニー症候群の計算をバイパスできると説明している論文を読んだことがありますが、そのようなコードは見たことがありません。

于 2017-07-03T02:06:18.187 に答える