5

私のデータは実際には完全にランダムではありません。同じ範囲にある傾向があるテレメトリ測定値を圧縮しようとしています (たとえば、温度はあまり変化しません)。しかし、私は複数のアプリケーションの解決策を探しているので、ある日は温度、次の日は電圧などを送信する可能性があります.

低データレートの衛星リンクを介して測定値を送信したいと考えています。SatCom はそれなりに高いので、できる限り節約したいと思っています。データのパックとアンパックにコンピューティング リソースを費やすことは気にしません (192 バイトを送信するのに最大 30 秒かかることがあります)。

テレメトリ データを最大限に圧縮できる FOSS データ圧縮方法を教えてもらえますか?

試してみる価値はありますか?どのようなパーセンテージの利益が期待できますか?

データの性質についてこれ以上正確に言えないことをお詫び申し上げます - 温度、緯度/経度のGPS位置、液体の流量などの一般的なテレメトリー測定値です.

4

3 に答える 3

5

真にランダムなデータは圧縮できません。

データの詳細を開示することはできないため、いくつかのサンプル データでいくつかの異なる圧縮アルゴリズムをテストすることをお勧めします。

開始するのに適した場所は、LZ77 スライディング ウィンドウ圧縮とハフマン コーディングの業界標準の組み合わせであるDEFLATE アルゴリズムです。これは多くの特定の圧縮パッケージによって実装されており、GZIPがその顕著な例です。

于 2012-11-15T02:32:34.213 に答える
4

おそらく最良の解決策は、DEFLATE ライブラリを使用し、それを大きなデータ ブロックに対して高圧縮設定で実行することです。

独自のストリーム圧縮アルゴリズムを展開する場合は、サウンド ファイルで機能するのと同じアルゴリズムを適用できます。最初の測定値を直接送信してから、各サンプルと前のサンプルの差をエンコードします (デルタ エンコード)。

現在、最適なエンコーディングは、データの変化の速さによって異なります。

データが急速に変化している場合は、適応型ハフマン ツリーを使用します。差が無相関 (データ + ノイズ) の場合、エントロピーから得られるのはサンプルあたり最大 1 ビットです。

いくつかの連続するデータ サンプルが互いに等しい可能性が高い場合 (データの変化が速くなく、HF ノイズがない場合)、1 つのハフマン ツリーを使用してゼロ以外の各差をエンコードし、2 つ目のハフマン ツリーを使用してゼロの数をエンコードします。 . これにより、実行ごとに最大 2 ビットが得られます。

差を 1 ビットのみ (アップまたはダウン) としてエンコードすることもできますが、長さゼロのランをエンコードできる必要があります。


私の提案: デルタ エンコードを 1 回または 2 回行って相関関係のないエントリを取得してから、ライブラリを使用して DEFLATE します。

于 2012-11-15T02:35:19.043 に答える