Алгоритмы сжатия для чисел только

Попробуйте добавить это правило в свой файл CSS:

.inspiry_property_portrait_slider .flex-viewport ul li a img{
    width: 100% !important;
}

Вот результат:

enter image description here

8
задан fireball003 18 May 2009 в 18:16
поделиться

4 ответа

Это одно из тех мест, где немного теории будет полезно. Вам нужно подумать о нескольких вещах:

  • какое разрешение ваших измерений: 0,1 ° или 0,001 °? 1 секунда или одна микросекунда?
  • - измерения связаны и в некотором порядке, или случайно перемешаны?

Скажем, например, разрешение составляет 0,01 °. По ним вы знаете, что ваши значения варьируются от -180 ° до + 180 °, или 35900 различных значений. Lg (35900) ≈ 16, поэтому вам нужно 16 бит; 14 бит для -90 ° - + 90 °. Ясно, что если вы храните такие значения как числа с плавающей запятой, вы можете сразу же сжать данные вдвое.

Каков диапазон, аналогично дате и времени; сколько битов у вас должно быть?

Теперь, если данные расположены в некотором порядке (например, выборки, взятые последовательно на борту одного корабля), тогда все, что вам нужно, это начальное значение и дельта; это может иметь большую разницу. Когда корабль движется со скоростью 30 узлов, положение не может измениться больше, чем примерно на 0,03 градуса в час или примерно на 0,0000083 градуса в секунду. Эти дельты будут очень маленькими значениями, поэтому вы можете хранить их в очень небольшом количестве бит.

Дело в том, что вы можете сделать ряд вещей, но вы должны знать о данных больше, чем мы, чтобы дать рекомендацию.


Обновление: Ой, подождите, строки с фиксированной точкой ?!

Хорошо, это (относительно) просто. Для начала, да, вы хотите преобразовать свои строки в какое-то двоичное представление.

7
ответ дан 5 December 2019 в 11:26
поделиться

Сжатие обычно работает с потоком байтов. Когда поток имеет неравномерное распределение байтовых значений (например, текст или числа, хранящиеся как текст), степень сжатия, которую вы можете достичь, будет выше, поскольку для хранения байтов, которые появляются чаще, используется меньшее количество битов (в Huffman сжатие).

Как правило, данные, о которых вы говорите, будут просто храниться в виде двоичных чисел (не текста), и это обычно эффективно по пространству и поиску.

Я рекомендую вам взглянуть на Сжатие данных Книга

5
ответ дан 5 December 2019 в 11:26
поделиться

Какие данные вы сжимаете? Как распределяется? Это как-то заказано? Все это может повлиять на то, насколько хорошо он сжимается, и, возможно, позволит вам преобразовать данные во что-то более легко сжимаемое или просто в меньшее сразу.

Сжатие данных плохо работает со «случайными» данными. Если ваши данные находятся в меньшем диапазоне, вы вполне можете воспользоваться этим.

По правде говоря, вам следует просто попробовать запустить любой из распространенных алгоритмов и посмотреть, достаточно ли «сжаты» данные. Если нет, и вы знаете о данных больше, чем может быть «интуитивно» с помощью алгоритмов сжатия, вы должны использовать эту информацию.

Пример: скажем, что ваши данные не только широты и долготы, но предполагается, что они быть «близко» друг к другу. Тогда вы, вероятно, могли бы сохранить "исходную" широту и долготу, а остальные могли бы быть дифференциальными. Возможно, эти различия достаточно малы, чтобы уместиться в один знаковый байт.

Это всего лишь простой пример того, что вы можете делать, зная данные, по сравнению с тем, что не может понять какой-то общий алгоритм.

2
ответ дан 5 December 2019 в 11:26
поделиться

Это зависит от того, что вы собираетесь делать с данными и какая точность вам нужна.

Широта / долгота традиционно указывается в градусах, минутах и ​​секундах с 60 секундами с точностью до минуты, 60 минут до градуса и 1 градус широты, номинально равный 60 морским милям (морским милям). Тогда 1 минута равна 1 морю, а 1 секунда - чуть более 100 футов.

Широта изменяется от -90 до +90 градусов. Представление широты в виде целых секунд дает диапазон -324000 .. + 324000, или около 20 бит. Долгота изменяется от -180 до +180, поэтому для представления долготы таким же образом требуется еще 1 бит.

Таким образом, вы можете представить полную широту / долгую позицию с точностью до +/- 50 футов в 41 бите.

Очевидно, если вам не нужна такая высокая точность, вы можете уменьшить количество бит.

Обратите внимание, что традиционное 32-битное число с плавающей запятой одинарной точности использует около 24 бита мантиссы, так что вы получите примерно +/- 6 футов, если просто преобразуете широту / долготу в секундах в плавающую. Трудно превзойти два поплавка одинарной точности для такого рода вещей.

1
ответ дан 5 December 2019 в 11:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: