1

js の圧縮方法はかなり多く見られましたが、ほとんどの場合、圧縮されたデータは文字列で、テキストが含まれていました。範囲 0-1 で 10^7 未満の float の配列を圧縮する必要があります。

精度はそれほど重要ではないため、最終的には0〜9の数字のみを含む文字列として保存できます(各浮動小数点数の小数点以下の最初の2桁のみを含む)。このようなデータにはどのような方法が最適でしょうか? 出力をできるだけ小さくしたいのですが、この文字列を圧縮するのに 10 秒以上かかるべきではありません。float ごとに 2 桁を保存すると、最大 10 000 000 の符号になります。js の圧縮方法はかなり多く見ましたが、ほとんどの場合、圧縮データは文字列で、テキストが含まれていました。範囲 0-1 で 10^7 未満の float の配列を圧縮する必要があります。

精度はそれほど重要ではないため、最終的には0〜9の数字のみを含む文字列として保存できます(各浮動小数点数の小数点以下の最初の2桁のみを含む)。このようなデータにはどのような方法が最適でしょうか? 出力を可能な限り小さくしたいのですが、この文字列を解凍するのに 10 秒以上かかるべきではありません。float ごとに 2 桁を保存すると、最大 10 000 000 の符号になります。

データには、Web Audio API をサポートしていない旧式のブラウザーで視覚化するための音声波形のレコードが含まれています。波形は Chrome ユーザー クライアントで 20 fps で記録され、圧縮されてサーバー データベースに保存されます。次に、ビジュアライゼーションを描画するリクエストの後に IE または ff に送り返します。そのため、非可逆圧縮が必要です。曲のメタデータ リクエストで送信できるサイズを達成するには、非常に不可逆的です。wav での圧縮 -> mp3 64k レベル (200:1 など) が可能であることを願っています100 ステップですが、1 つの周波数の記録を 1 つの符号に減らします。でも次は、最適な圧縮を実現するために、0-Z 記号を使用してこの文字列に使用する圧縮方法は? lzma はこのような文字列に適していますか? 圧縮/解凍は Web ワーカーで実行されるため、本当に瞬時である必要はありません - 解凍は 10 秒程度で、圧縮は問題ではありません - むしろ 1 曲未満なので約 2 分です

4

1 に答える 1

5

暗闇の中で写真を撮って、小数点以下の最初の 2 桁のみを本当に信頼できる場合 (つまり、配列に 0.00045 がない場合)、2 桁が必要な場合、最も簡単な方法は 256 を掛けることです。整数部分をバイトとして受け取る

encoded = Math.floor(floatValue * 256)
decoded = encoded / 256.0

ただし、データについて詳しく知っていれば、値からより多くのエントロピーを絞り出すことができます。これは 4:1 の圧縮比になります。

于 2013-09-14T22:12:47.387 に答える