![]() |
|
Модераторы: bsa |
![]()
|
|
| Vicipi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
у меня есть массив int M[96]; состоящий из 1 и 0. дана матрица А=
1101000 0110100 1110010 1010001 нужно зашифровать массив путем разбиеня на 4 бита: "кодирование сообщения из 4 бит кодом Хемминга осуществляется путем умножения вектора сообщения на порождающую матрицу кода в соответствии с алгоритмом Y = X A; где Х – вектор сегмента сообщения из 4 бит, Y – закодированный сегмент сообщения, содержащий 7 бит" пожете пояснить, на что нужно умножать: 4 бита на строку или столбец матрицы? брать вектор сегмента - это как? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
может поможет : http://www.intuit.ru/department/calculate/...theory/9/2.html
Это сообщение отредактировал(а) mes - 18.1.2009, 18:29 |
|||
|
||||
| Vicipi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
информация полезная, но не помогла...
|
|||
|
||||
| Kallikanzarid |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 240 Регистрация: 9.11.2008 Репутация: 2 Всего: 3 |
Тут, видимо, синопсис такой: char values[n] - массив n векторов, values[i] = x1 * 2^4 + x2.
Умножать, понятное дело, можно только одним способом Вот, я частично сделал:
Это сообщение отредактировал(а) Kallikanzarid - 19.1.2009, 06:09 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 6 Всего: 26 |
разве такое не решается таблицей из 16 элементов7
|
|||
|
||||
| Vicipi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
Что это? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Это "^" ? исключающее_или (xor) поиск поможет матрица, имхо, неправильная, контрольные ряды должны распологаться по степеням двойки то есть ряды 1,2,4 а у Вас 1,2,3. решается для кодирования. Но таблица не позволяет узнать в каком ряду ошибка. |
|||
|
||||
| Vicipi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
||||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
а откуда она появилась то ? в приведенном коде не нашел. |
|||
|
||||
| Vicipi |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 13.2.2008 Репутация: нет Всего: нет |
||||
|
||||
| mes |
|
||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
4 бита никуда не деваются - они просто меняют свое положение в 7ми битной последовательности. для начала как происходит это без участия матрицы :
Это сообщение отредактировал(а) mes - 24.1.2009, 12:06 |
||||||||
|
|||||||||
| mes |
|
||||||||||||||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
матрица нужна , чтоб автоматизировать процесс ,
в ней выражено какие биты надо использовать для операций. кодирование : выразим матрицу для кодирования через неупакованную последовательность бит
таким же образом определим исходное сообщение и хеминг последовательность
как в таблице пифагора 4 бита сообщения соотносятся с 7ю битами хемминга чтоб получить бит N хемминга мы должны сложить по модулю 2 произведение каждого бита данных на соответсвующий элемент матрицы, т.е :
если присмотреться к матрице , то видно что для информационых битов матрица единичная, т.е в результате выполнения предыдущей операции для информационых битов происходит присваивание (к примеру i2 = b2) а для контрольных вычесление четности (к примеру r3 = b2^b3^b4) после мы будем использовать знание о четности для восстановления последовательности декодирование : прежде всего мы должны получить синдром по контрольным битам и если он не 0 то исправить последовательность для этого заводим матрицу
каждый вектор матрицы соответсвует битам для вышеупомянутых операций :
теперь делаем эти операции в цикле умножая на вектор матрицы
и вычисляем номер ошибочного разряда:
теперь если есть ошибка, то востанавливаем нашу последовательность :
теперь можно получить нужные нам биты, возпользуемся опять матрицей умножаем каждый бит хеминга на соответствующий вектор матрицы и XORим его
Это сообщение отредактировал(а) mes - 24.1.2009, 22:26 |
||||||||||||||||||||
|
|||||||||||||||||||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Как уже было сказано выше, матрица нужна чтоб не зависить от порядка рассположения битов в последовательностях и способа расчета контрольной суммы.
Все три матрицы должны быть синхронизированны относительной общей схемы кодирования. Расположение информационых и контрольных бит в последовательности хемминга тоже не случайно, оно выбрано таким образом, чтоб по ошибке в контрольной сумме , можно было узнать номер испорченного бита ну и напоследок тут подробно изложено по теме со схемами : lib.aanet.ru/pdf/kafedra22/d2.pdf Это сообщение отредактировал(а) mes - 24.1.2009, 22:27 |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
Примечание:
сложение по модулю 2 аналогичнo операции xor (^) а умножение битов аналогичнo операции and (&) Это сообщение отредактировал(а) mes - 24.1.2009, 01:35 |
|||
|
||||
| mes |
|
||||||||||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
протестить Во первых:
Во вторых:
Порождающая матрица представляет формулу, которая кодируют контрольные биты так, чтоб ошибка четности, показывала испорченого номер бита Также она показывает в каком месте будет располагаться биты сообщения. для вышеупомянотого 7ми битного ряда хеминга :
порождаюшая матрица соответсвует как :
матрица определения синдрома вычисляется из рядов порождающей матрицы, соответсветсвующих контрольным битам т.е 1, 2 и 4 строчкe. Чтоб получить синдром надо сложить контрольный бит с теми битами из которых он получен :
эта синдромная матрица соответсвует представленой выше но повернутой на 90 градусов.. принципиальной разницы нет. ну а матрица получения битов даннов, получена таким же образом из полей соответсвующих информационным битам и в матрицы ряды являются единичными. Т.е наглядно достаточно легко определить синхорнизированны ли матрицы. Но помимо синхроности нам нужна "правильность" синдрома: рассмотрим синдромную матрицу
повернем ее по часовой стрелки на 90 градусов : битовое представление должно сооветсвовать номеру ряда:
прямое соответсвие необязательно, но каждой строчке должен соответсвовать уникальный номер (не совпадующий с номерами в других рядах) и в случае нелинейного соответствия декодеру придется делать дополнительные действия для определения ошибочной позиции. Это сообщение отредактировал(а) mes - 26.1.2009, 14:53 |
||||||||||||||||
|
|||||||||||||||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |