Кроме очень НЧ скорость ограничивает уровень шума. И, возможно, в той же полосе можно сильно повысить скорость передачи данных, всунувшись в ту же полосу, если SNR позволяет. Достаточно просто сменить способ модуляции. Был, например, BPSK, сделали 8PSK. И скорость в 3 раза выше, например. Но взамен отдай ~3дб. Кроме того, если речь о цифровых данных, кроме помехоустойчивого кодирования (которое, в свою очередь, позволяет более низкий SNR), почему бы не использовать сжатие данных? Тем более, если о данных что-то уже известно, то могут применяться простые и весьма эффективные способы, более эффективные чем RAR, например, для данных с известными характеристиками. Пример из практики. Для передачи через очень узкий канал данных типа таблицы (множество записей/строк с одинаковыми по смыслу полями/колонками) делалось следующее. Во-первых данные передавались не построчно, а по-колонкам (вначале первая колонка для всех записей, потом вторая...) Каждая колонка сжималась отдельно. Поскольку в колонке однотипные данные, то их сжать гораздо проще, чем при построчной передаче. К каждой колонке применялось дельта-кодированние (вначале передаётся начальное значение, потом разность между соседними значениями), числа преобразовывались к беззнаковым (1-->1, -1-->2, 2-->3, -2-->4... -- что бы не было большого числа FF в знаковых многобайтовых числах, что сбивает статистику), RLE (кодирование повторяющегося значения), далее арифметическое кодирование (с вероятностной моделью 1-го порядка, т.е. коэффициенты кодера менялись в зависимости от уже закодированных данных, что улучшало сжатие, и также были начальные коэффициенты на основе характеристик "средних" данных) с помощью "русского народного range coder им. Дмитрия Субботина". Результат лучше, чем если передавать построчно сжимая RAR'ом. И реализовано на МК. Одно только дельта-кодирование дало фантастический результат уже. Причём, специфика чисел может быть такая, что после дельта-кодирования остаются преимуществнно небольшие значения и, возможно, вместо арифметического кодирования проще будет дельты закодировать кодами Элиаса или Голомба, на том и ограничиться. Это не требует каких-то больших вычислений, как и RLE, в отличии от арифметического кодирования. И последний может кодировать вовсе не байты, а слова (единственное что, модель занимает много ОЗУ). Помимо сказанного можно использовать ещё что-то вроде LZ алгоритма со словарём заранее известным обоим сторонам. И кодировать не непосредственные данные, а их код в словаре. До арифметического кодера, разумеется.
[ZX]
-
- Блин... с понедельника начинаю новую жизнь. Барбос(383 знак., 08.09.2013 13:59)
- Раз уж новую жизнь то полистай: Финк "Сигналы ,помехи ,ошибки".Забавная книжка , думать заставляет. - plainuser(09.09.2013 15:24)
- Блин... с понедельника начинаю новую жизнь. Барбос(383 знак., 08.09.2013 13:59)