2017-12-23 8 views
1

Ich möchte einen "Füll" -Wert für 4- und 8-Byte-Gleitkommavariablen in einer netcdf-Datei entwerfen, um einen speziellen Fall fehlender Daten darzustellen. Es gibt bereits eine Konstante NF_FILL_FLOAT und mein Verständnis über das Design ist, dass es neben einem großen, seltsamen Wert ein sehr komprimierbares Bitmuster hat. Ich glaube, es ist anders als riesig (x). Ich verwende bereits NF_FILL_FLOAT, um fehlende Werte zu füllen - mein Wert muss unterscheidbar sein. Wie gehe ich vor? Was sind die Überlegungen für die Komprimierung? Vielen Dank.Entwerfen einer großen komprimierbaren binären Gleitkommazahl in Fortran

+2

Das erste offensichtliche Denken zu FO ist, den Wert von NF_FILL_FLOAT als eine reelle Zahl und als ein Bitmuster zu untersuchen. Was sind die Ergebnisse Ihrer Untersuchungen? –

+0

personaly, ich benutze immer den Wert -123456789, der als Integer oder Real mit 4 oder 8 Bytes OK ist. Die Wahrscheinlichkeit, einen wahren Wert zu finden, ist so niedrig ... –

Antwort

2

Was ist, wenn Sie NF_FILL_FLOAT nehmen und es durch 2 ** n dividieren, wobei n eine ganze Zahl> = 0 ist? Dies würde Ihnen "n" individuelle "Füllwerte" geben, und im Wesentlichen verschiebt die Division einfach die Bits um n, sollte also immer noch komprimierbar sein.

(Natürlich, wenn Sie auf ein netcdf schreiben, dann ist externe Software nur entworfen, um einen Wert von MISSING zu erkennen, damit Ihre Füllwerte nicht erkannt werden).

Verwandte Themen