1 ミリ秒間隔でサンプル (16 ビット数) を生成する組み込みシステムがあります。可変アップリンク帯域幅はせいぜい 5 ミリ秒ごとにサンプルを転送できるため、重要な情報 (この場合は時間間隔の最小値と最大値) の損失を最小限に抑えながら、データ レートを適応的に下げる方法を探しています。
私がうまくいくと思うスキームには、スパースコーディングと非可逆圧縮のバリエーションが含まれます。このような:
- システムは、10 ミリ秒間隔で最小値と最大値を内部的に保存します。
- システムは、これらのデータ ペアの限られた数 (たとえば 50) を内部的にキューに入れます。
- 最小値または最大値の損失は許可されませんが、それらが発生する時間間隔は異なる場合があります。
- キューがいっぱいになると、隣接するデータ ペアがキューの最後から結合され、変換された最小/最大ペアが 20 ミリ秒間隔を表すようになります。
- スキームは、必要に応じて 40ms、80ms などにさらに間隔を組み合わせて実行できるように、反復する必要があります。
- このスキームは、キューの長さ全体で線形に重み付けする必要があります。これにより、最新のデータの結合と、最も古いデータの必要な最大結合がなくなります。
たとえば、長さ 6 のキューでは、連続するデータ削減により、データ ペアが次の間隔をカバーする必要があります。
initial: 10 10 10 10 10 10 (60ms, queue full)
70ms: 10 10 10 10 10 20
80ms: 10 10 10 10 20 20
90ms: 10 10 20 20 20 20
100ms: 10 10 20 20 20 40
110ms: 10 10 20 20 40 40
120ms: 10 20 20 20 40 40
130ms: 10 20 20 40 40 40
140ms: 10 20 20 40 40 80
新しいサンプルは左側に追加され、データは右側から読み取られます。
この考え方は明らかに、非可逆圧縮とスパース コーディングのカテゴリに分類されます。
これは、アップリンク帯域幅が限られているデータ ログ アプリケーションで頻繁に発生する問題であり、「標準的な」ソリューションが出現した可能性があると思います。
意図的に単純化し、タイム スタンプなどの他の問題を省略しました。
質問:
- この種のデータロギングを行うアルゴリズムはすでにありますか? 私が探しているのは、標準の非可逆画像またはビデオ圧縮アルゴリズムではなく、上記のデータ ログに特化したものです。
- キューの最も適切な実装は何ですか? リンクリスト?木?