Algorithmus :: FEC.

Forward-Fehlerkorrektur mit Vandermonde-Matrizen
Jetzt downloaden

Algorithmus :: FEC. Ranking & Zusammenfassung

Anzeige

  • Rating:
  • Lizenz:
  • Perl Artistic License
  • Preis:
  • FREE
  • Name des Herausgebers:
  • Marc Lehmann
  • Website des Verlags:
  • http://www.goof.com/pcg/marc/

Algorithmus :: FEC. Stichworte


Algorithmus :: FEC. Beschreibung

Vorwärtsfehlerkorrektur mit Vandermonde-Matrizen Algorithmus :: FEC ist eine Perl-Schnittstelle zur FEC-Bibliothek von Luigi Rizzo et al. Sehen Sie sich die Datei readme.fec in der Verteilung für weitere Details an. Diese Bibliothek implementiert einen einfachen (Coded_Blocks, Data_blocks) -Leasure-Code, der auf Vandermonde-Matrizen basiert. Der Encoder nimmt data_blocks-Blöcke der Größe block_size an und kann bis zu codierten_blocks verschiedene codierte Blöcke herstellen, die von 0 bis codiert_blocks-1 nummeriert ist, so dass jede Teilmenge von Data_Blocks-Elementen die Rekonstruktion der Originaldaten ermöglicht. Zulässige Werte für Data_Blocks und Encoded_Blocks müssen der folgenden Gleichung gehorchen: Data_blocks. Mailen Sie mir, wenn Sie möchten, dass dies passiert. Wenn ohne Argumente angerufen wird, wird der mit den Blöcken verbundene interne Speicher wiederholt. $ block = $ fec-> codig ($ block_index) erstellt einen einzelnen codierten Block von Index block_index, der zwischen 0 und codiert_blocks-1 (inklusive) liegen muss. Die Blöcke von 0 bis data_blocks-1 sind einfach Kopien der ursprünglichen Datenblöcke. Der kodierte Block wird als Perl-Skalar zurückgegeben (so dass die Blöcke in den Speicher passen. Wenn dies ein Problem für Sie ist, mailen Sie mir und ich mache es zu einer Datei. $ Fec-> set_decode_blocks (, ) Bereitet sich darauf vor, Data_blocks von Blöcken zu decodieren (siehe Set_encode_Blocks für den Parameter Array_OF_BLOCKS). Da diese nicht üblicherweise die ursprünglichen Datenblöcke sind, muss ein Array von Indizes (im Bereich von 0 bis codiert_blocks-1) als zweites ArrayRef geliefert werden. Beide Arrays müssen Genaue Data_Blocks-Einträge. Diese Methode setzt auch die Blöcke und das Indexarray an Ort und Stelle (falls erforderlich) an, um die Reihenfolge zu reflektieren, die die Blöcke im decodierten Ergebnis aufweisen. Das Indexarray repräsentiert die decodierte Reihenfolge, in der der n-ten Eintrag in den Indizes Das Array entspricht dem N-ten Datenblock des decodierten Ergebnisses. Der in der n-ten Stelle in dem Array gespeicherte Wert enthält den Index des codierten Datenblocks. Eingangsblöcke mit Indizes weniger als Data_blocks werden in ihre endgültige Position verschoben (Block K. auf Position k), während die Lücken zwischen ihnen mit Scheckblöcken gefüllt werden. Der Decodiervorgang ändert nicht die bereits decodierten Datenblöcke, sondern modifizieren die Kontrollblöcke. Das heißt, wenn Sie diese Funktion mit Indizes = anrufen, mit Data_blocks = 3, wird dieses Array zurückgegeben: . Dies bedeutet, dass der Eingabeblock 0 dem Dateiblock 0, Eingabeblock 1 in den Datenblock 2 und den Eingabeblock 2 an den Datenblock 1 entspricht. Sie können nur über dieses Array iterieren und den entsprechenden Datenblock schreibt (obwohl dies ineffizient ist) Mein $ i (0. $ # idx) if ($ idx ! = $ i) # Muss wir diesen Block bewegen? Kopieren codierter Block $ idx auf Position $ i}} Die Kopiermethode kann hier hilfreich sein. Diese Methode zerstört das Blockarray wie von SET_ECODE_BLOCKS eingerichtet. $ fec-> shuffle (, ) das gleiche wie set_decode_blocks, mit Ausnahme, dass die Blöcke nicht eigentlich zur Dekodierung eingestellt sind. Diese Methode wird normalerweise nicht verwendet, aber wenn Sie Blöcke nach der Neuordnung und vor dem Dekodieren umziehen möchten, dann rufen Sie den Shuffle an, gefolgt von SET_DECODE_BLOCKS, dann einen niedrigeren Overhead, als zweimal set_decode_blocks aufzurufen, da Dateien nicht mymnap usw. anrufen. $ Fec-> decodieren decodieren Sie die Blöcke durch einen vorherigen Aufruf zum set_decode_blocks eingestellt. Dieses Verfahren zerstört das Blockfeld, wie durch set_decode_blocks einzurichten. $ FEC> kopiert ($ srcblock, $ dstblock) Utility-Funktion, die einfach kopiert einen Block (angegeben wie in set_encode_blocks) in einer anderen. Dies, btw., Zerstört die durch Satz Satz Blöcke _ * _ Blöcke. SYNTAX verwendete Algorithmus :: FEC; Anforderungen: · Perl.


Algorithmus :: FEC. Zugehörige Software