777777 0 November 6, 2011 Posted November 6, 2011 · Report post Телеметрия для передачи данных такова, что ошибочные слова в 99% случаев отличаются от истинных на +-1. Отклонение на большее число крайне редко и такие случаи можно не восстанавливать, а лишь сообщать об ошибке. Какой алгоритм лучше применить для такого случая? Quote Share this post Link to post Share on other sites More sharing options...
Serg76 0 November 6, 2011 Posted November 6, 2011 · Report post Телеметрия для передачи данных такова, что ошибочные слова в 99% случаев отличаются от истинных на +-1. Отклонение на большее число крайне редко и такие случаи можно не восстанавливать, а лишь сообщать об ошибке. Какой алгоритм лучше применить для такого случая? Расширенный Хемминга или, если понадобится по-мощнее, можно глянуть БЧХ. Quote Share this post Link to post Share on other sites More sharing options...
777777 0 November 7, 2011 Posted November 7, 2011 · Report post Расширенный Хемминга или, если понадобится по-мощнее, можно глянуть БЧХ. Но они не используют тот факт, что ошибочное слово может отличаться от правильного на +-1. Может в этом случае можно использовать меньше проверочных слов? Quote Share this post Link to post Share on other sites More sharing options...
Serg76 0 November 7, 2011 Posted November 7, 2011 · Report post Но они не используют тот факт, что ошибочное слово может отличаться от правильного на +-1 Это как? Коды Хемминга исправляют однократную ошибку, а БЧХ и подавно. Quote Share this post Link to post Share on other sites More sharing options...
777777 0 November 7, 2011 Posted November 7, 2011 · Report post Это как? Коды Хемминга исправляют однократную ошибку, а БЧХ и подавно. Да, но исправляется всё слово как бы сильно оно ни испортилось. Даже если все 0 превратятся во все 1. У меня же обычно если происходит ошибка, то это выражается в том, что число становится на 1 больше или меньше. То есть 1000 может превратиться в 0111, но в 0000 - практически исключено. Может есть коды, которые пользуются этим свойством? Quote Share this post Link to post Share on other sites More sharing options...
SKov 0 November 7, 2011 Posted November 7, 2011 · Report post Да, но исправляется всё слово как бы сильно оно ни испортилось. Даже если все 0 превратятся во все 1. У меня же обычно если происходит ошибка, то это выражается в том, что число становится на 1 больше или меньше. То есть 1000 может превратиться в 0111, но в 0000 - практически исключено. Может есть коды, которые пользуются этим свойством? Есть специальные коды для исправления такого рода ошибок. Называются арифметические коды. Искать в гугле. Quote Share this post Link to post Share on other sites More sharing options...
i-mir 0 November 7, 2011 Posted November 7, 2011 · Report post Интерес вызывает именно Ваш канал передачи данных. Каким образом он может выполнить операцию "1000 -> 0111" ? Т.е. ваш канал связи обладает своего рода интеллектом ? Я у себя доказываю безопасность каналов связи постулируя отсутствие "интеллекта" и невозможности внесения структурированных изменений ... Возможно причина ошибок в чем-то другом? Quote Share this post Link to post Share on other sites More sharing options...
777777 0 November 7, 2011 Posted November 7, 2011 · Report post Интерес вызывает именно Ваш канал передачи данных. Каким образом он может выполнить операцию "1000 -> 0111" ? Т.е. ваш канал связи обладает своего рода интеллектом ? При чем тут интеллект? Код передается как амплитуда одного периода синусоиды. имеется 16 градаций амплитуды и таким образом один период кодирует 4 бита. Но вследствие помех в канале измерение иногда дает результат, отличающийся на единицу. Quote Share this post Link to post Share on other sites More sharing options...
des00 27 November 7, 2011 Posted November 7, 2011 · Report post Да, но исправляется всё слово как бы сильно оно ни испортилось. Даже если все 0 превратятся во все 1. У меня же обычно если происходит ошибка, то это выражается в том, что число становится на 1 больше или меньше. То есть 1000 может превратиться в 0111, но в 0000 - практически исключено. Может есть коды, которые пользуются этим свойством? При чем тут интеллект? Код передается как амплитуда одного периода синусоиды. имеется 16 градаций амплитуды и таким образом один период кодирует 4 бита. Но вследствие помех в канале измерение иногда дает результат, отличающийся на единицу. код грея даст вам расстояние до соседа +-1 а код хеминга требуемую вами защиту. Quote Share this post Link to post Share on other sites More sharing options...
GetSmart 0 November 7, 2011 Posted November 7, 2011 · Report post код грея даст вам расстояние до соседа +-1 а код хеминга требуемую вами защиту. Я так понимаю, что здесь не цифровой формат данных, а псевдо-аналоговый. И видимо, кроме всего прочего, коды, исправляющие ошибки, нужно будет передавать в этом же аналоговом формате. Ну и они тоже могут исказиться. Quote Share this post Link to post Share on other sites More sharing options...
des00 27 November 7, 2011 Posted November 7, 2011 · Report post Я так понимаю, что здесь не цифровой формат данных, а псевдо-аналоговый. И видимо, кроме всего прочего, коды, исправляющие ошибки, нужно будет передавать в этом же аналоговом формате. Ну и они тоже могут исказиться. автор молчит сильно, я предположил что у него есть какая то схема принятия решений (АЦП/компартор и т.д.), поэтому предложил ему грея, т.к. это даст максимальную ошибку в 1 бит. ну а дальше нужно оценить что будетм защищать : символ или пакет %) Quote Share this post Link to post Share on other sites More sharing options...
paskal 1 November 7, 2011 Posted November 7, 2011 · Report post Да, но исправляется всё слово как бы сильно оно ни испортилось. Даже если все 0 превратятся во все 1. У меня же обычно если происходит ошибка, то это выражается в том, что число становится на 1 больше или меньше. То есть 1000 может превратиться в 0111, но в 0000 - практически исключено. Может есть коды, которые пользуются этим свойством? Вот как так происходит, что при прохождении через цифровой канал число 1000 может превратится в 0111, но не может в 0000? Не бывает такого. Поэтому и коды исправляют всё. Сдается мне, что вы на самом деле вы говорите не об ошибках, а о шумах. И задачу надо ставить как то по другому - искать не код исправления ошибок, а какой то фильтр например. Quote Share this post Link to post Share on other sites More sharing options...
Serg76 0 November 7, 2011 Posted November 7, 2011 · Report post Да, но исправляется всё слово как бы сильно оно ни испортилось. Даже если все 0 превратятся во все 1. У меня же обычно если происходит ошибка, то это выражается в том, что число становится на 1 больше или меньше. То есть 1000 может превратиться в 0111, но в 0000 - практически исключено. Может есть коды, которые пользуются этим свойством? Так у вас действительно последовательный код. Примените Грея для начала как советовал des00 + Хемминг для исправления однократной ошибки Quote Share this post Link to post Share on other sites More sharing options...
i-mir 0 November 7, 2011 Posted November 7, 2011 · Report post При чем тут интеллект? Код передается как амплитуда одного периода синусоиды. имеется 16 градаций амплитуды и таким образом один период кодирует 4 бита. Но вследствие помех в канале измерение иногда дает результат, отличающийся на единицу. Так отож. И при чем здесь кодирование? У вас проблемы с измерениями а не в канале связи. Вы принципиально решаете не ту задачу. Лучше решить вопросы с 4-х битным АЦП. А самый младший бит будет гулять - тут уж закон природы АЦП. Нужно 5 разрядов. Quote Share this post Link to post Share on other sites More sharing options...
GetSmart 0 November 7, 2011 Posted November 7, 2011 (edited) · Report post Так отож. И при чем здесь кодирование? У вас проблемы с измерениями а не в канале связи. Там же ясно написано, что проблема с помехами (шумом?) в канале. Если они на уровне 4-ого бита, то хоть 20 битный АЦП ставь, пользы не будет. Edited November 7, 2011 by GetSmart Quote Share this post Link to post Share on other sites More sharing options...