La compression de données à virgule flottante

Existe-il des méthodes de compression sans perte qui peut être appliquée à virgule flottante de séries chronologiques de données, et continuera de les surpasser, de dire, d'écrire les données sous forme binaire dans un fichier et en l'exécutant à travers gzip?

Réduction de la précision peut être acceptable, mais il doit se faire d'une manière contrôlée (c'est à dire je dois être en mesure de fixer une limite sur le nombre de chiffres doit être conservé)

Je suis en train de travailler avec certains de gros fichiers de données qui sont des séries de corrélation doubles, décrivant une fonction du temps (c'est à dire les valeurs sont corrélées). Je n'ai généralement pas besoin de la pleine double de précision, mais j'ai peut-être besoin de plus de float.

Car il existe des méthodes sans perte pour les images/audio, je me demandais si quelque chose spécialisé existe pour cette situation.

Précisions: je suis à la recherche pour les outils pratiques plutôt que d'un article décrivant comment mettre en place quelque chose comme ça. Quelque chose de comparable à gzip en vitesse serait excellent.

  • Qu'allez-vous faire avec ces données? Êtes-vous transférer? Le stockage pendant un certain temps avant de l'utiliser? Juste essayer d'utiliser moins de mémoire? Ou êtes-vous spécifiquement à la recherche d'un compact moyen de stocker des données de séries chronologiques?
  • Plusieurs raisons, mais je ne suis pas sûr que ça va aider avec toutes ces personnes. 1. Je suis faible sur la mémoire, il serait utile de stocker les bits inutilisés en mémoire comprimé, tandis que la décompression seulement ce que je suis en traitement. 2. La Compression peut écart de lecture/écriture à partir de/à disque (il l'a fait pour moi, avec d'énormes fichiers de texte et gzip) 3. Oui, je suis le stockage de données compressé sur le disque (gzip maintenant).
  • Pour l'instant la plupart de mes données est presque périodique, et gzip me donne un 4x compression. Je suis sûr que beaucoup mieux, c'est possible en raison des fortes corrélations dans les données.
  • Vous dites, "sans perte", mais vous dites aussi que "la réduction de la précision est acceptable." Mais, la réduction de la précision c'est une perte.
  • J'ai aussi dit que cela doit être fait d'une manière contrôlée, c'est à dire définir une limite sur elle. Je n'ai pas besoin tous les 15 chiffres de la double valeur de précision dans toutes les applications, mais j'ai besoin d'être en mesure de définir une garantie de la préservation par exemple, au moins 6 chiffres, ou quelque chose de similaire. Est-ce à clarifier la question? Ne soyons pas coincé polémiquer sur les détails sans importance, je pense que la question est assez claire dans ce que je recherche. Une solution qui n'est pas de réduire la précision est acceptable pour mes besoins. Une solution qui n'est pas le réduire en dessous d'un seuil réglable est également acceptable.
  • Si vous savez à l'avance combien de précision, vous avez besoin de conserver, vous pouvez essayer de convertir les valeurs brutes à une représentation sous forme de chaîne. Un test rapide à l'aide de VB.Net (avec des valeurs aléatoires) montre qu'il compresse jusqu'à 45% au lieu de 150%. YMMV
  • La réduction de la précision, de manière contrôlée est "la compression avec perte." "Lossless" signifie que la compression et puis la décompression des rendements exactement les mêmes données, bit par bit, comme l'original. Si le résultat n'est qu'une approximation (généralement dégradées dans certains contrôlé/délimitée façon), alors que c'est "la compression avec perte."
  • Pouvez-vous laisser de côté les cheveux en les divisant @jameslarge ? Elle n'ajoute rien à la discussion. Ce type de "j'ai à droite" compulsif affirmant ne pas faire de StackOverflow un meilleur endroit. Concentrons-nous sur la solution du problème, allons-nous?
  • Je me demandais si vous êtes à l'aide de C# ou C++ et si vous avez regardé LZ4? J'ai été en utilisant un LZ4 algorithme en C#, ce qui ne permet pas de fournir le plus haut niveau de compression pour nos données, mais semble être la manière la plus rapide de compression et de décompression pour le niveau de compression, il prend en charge.
  • Le dialogue sur lossless et de "réduction de precisison pourrait être acceptable" est étrange, j'ai l'impression que james est mis d'analyse de la question ou quelque chose, plutôt que ce que c'est une question d'égo. J'ai lu la question "y a-lossless... ou, je pourrais être intéressé, avec perte des solutions". Je pense que c'était l'intention, et il est clair et non-problématique pour moi, mais peut-être il serait utile si vous juste ajouté "Ou" à la deuxième phrase: "Ou, à la réduction de la précision peut être acceptable, ..." et peut-être inclure le mot de perte ainsi. Ou, vous pouvez juste avoir du plaisir à hurler à jacques 🙂
  • Je vois que vous vous posé une question similaire sur scicomp et obtenu quelques excellentes réponses, donc je voulais m'assurer qu'il n'y est fait référence ici: scicomp.stackexchange.com/questions/1671/...

InformationsquelleAutor Szabolcs | 2011-12-25