| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > кодирование |
| Автор: Vicipi 18.1.2009, 10:31 |
| у меня есть массив int M[96]; состоящий из 1 и 0. дана матрица А= 1101000 0110100 1110010 1010001 нужно зашифровать массив путем разбиеня на 4 бита: "кодирование сообщения из 4 бит кодом Хемминга осуществляется путем умножения вектора сообщения на порождающую матрицу кода в соответствии с алгоритмом Y = X A; где Х – вектор сегмента сообщения из 4 бит, Y – закодированный сегмент сообщения, содержащий 7 бит" пожете пояснить, на что нужно умножать: 4 бита на строку или столбец матрицы? брать вектор сегмента - это как? |
| Автор: mes 18.1.2009, 18:29 |
| может поможет : http://www.intuit.ru/department/calculate/infotheory/9/2.html |
| Автор: Vicipi 18.1.2009, 22:50 |
| информация полезная, но не помогла... |
| Автор: Kallikanzarid 19.1.2009, 06:09 | ||
| Тут, видимо, синопсис такой: char values[n] - массив n векторов, values[i] = x1 * 2^4 + x2. Умножать, понятное дело, можно только одним способом Вот, я частично сделал:
|
| Автор: GoldFinch 19.1.2009, 07:36 |
| разве такое не решается таблицей из 16 элементов7 |
| Автор: Vicipi 19.1.2009, 20:02 | ||
Что это? |
| Автор: mes 19.1.2009, 20:10 |
Это "^" ? исключающее_или (xor) поиск поможет матрица, имхо, неправильная, контрольные ряды должны распологаться по степеням двойки то есть ряды 1,2,4 а у Вас 1,2,3. решается для кодирования. Но таблица не позволяет узнать в каком ряду ошибка. |
| Автор: Vicipi 19.1.2009, 20:26 |
в смысле что за формула такая, что за x1 и x2, для чего она? |
| Автор: mes 19.1.2009, 22:37 |
а откуда она появилась то ? в приведенном коде не нашел. |
| Автор: Vicipi 20.1.2009, 22:01 | ||
до кода. |
| Автор: mes 24.1.2009, 00:28 | ||||||||
4 бита никуда не деваются - они просто меняют свое положение в 7ми битной последовательности. для начала как происходит это без участия матрицы :
|
| Автор: mes 24.1.2009, 00:45 | ||||||||||||||||||||
| матрица нужна , чтоб автоматизировать процесс , в ней выражено какие биты надо использовать для операций. кодирование : выразим матрицу для кодирования через неупакованную последовательность бит
таким же образом определим исходное сообщение и хеминг последовательность
как в таблице пифагора 4 бита сообщения соотносятся с 7ю битами хемминга чтоб получить бит N хемминга мы должны сложить по модулю 2 произведение каждого бита данных на соответсвующий элемент матрицы, т.е :
если присмотреться к матрице , то видно что для информационых битов матрица единичная, т.е в результате выполнения предыдущей операции для информационых битов происходит присваивание (к примеру i2 = b2) а для контрольных вычесление четности (к примеру r3 = b2^b3^b4) после мы будем использовать знание о четности для восстановления последовательности декодирование : прежде всего мы должны получить синдром по контрольным битам и если он не 0 то исправить последовательность для этого заводим матрицу
каждый вектор матрицы соответсвует битам для вышеупомянутых операций :
теперь делаем эти операции в цикле умножая на вектор матрицы
и вычисляем номер ошибочного разряда:
теперь если есть ошибка, то востанавливаем нашу последовательность :
теперь можно получить нужные нам биты, возпользуемся опять матрицей умножаем каждый бит хеминга на соответствующий вектор матрицы и XORим его
|
| Автор: mes 24.1.2009, 01:06 |
| Как уже было сказано выше, матрица нужна чтоб не зависить от порядка рассположения битов в последовательностях и способа расчета контрольной суммы. Все три матрицы должны быть синхронизированны относительной общей схемы кодирования. Расположение информационых и контрольных бит в последовательности хемминга тоже не случайно, оно выбрано таким образом, чтоб по ошибке в контрольной сумме , можно было узнать номер испорченного бита ну и напоследок тут подробно изложено по теме со схемами : http://lib.aanet.ru/pdf/kafedra22/d2.pdf |
| Автор: mes 24.1.2009, 01:35 |
| Примечание: сложение по модулю 2 аналогичнo операции xor (^) а умножение битов аналогичнo операции and (&) |
| Автор: mes 25.1.2009, 15:24 | ||||||||
| вот сделал небольшую "библиотечку" (в стиле си с элементами с++) с тестовым примером , для пользования хеммингом Добавлено @ 15:28
матрицы только для кодирования 4х битового сообщения :
|