Объясните пожалуйста как создается проверочная матрица :)
К примеру задача:
Переданы три сообщения, закодированные словами a1 a2 a3 a4 a5 a6 a7 в алфавите
B = {0,1}. Символы a5 a6 a7 являются проверочными и вычисляются по формулам
a5 = a2 + a3 + a4
a6 = a1 + a3 + a4
a7 = a1 + a2 + a4
Известно, что при передаче
сообщений полученные слова могли быть искажены одиночными ошибками.
a) Задайте проверочную матрицу H
b) Для каждого из трех полученных слов 0010100, 0011110,1100110 определите
передано ли оно с искажением. Для искаженного слова укажите номер
разряда, в котором произошла одиночная ошибка.
Мое решение:
Я получил порождающую матрицу следующего вида:
1 0 0 0 | 0 1 1
0 1 0 0 | 1 0 1
0 0 1 0 | 1 1 0
0 0 0 1 | 1 1 1
Затем по формуле проверочной матрицы:
Проверочная матрица в систематическом виде строится на основе матрицы G(n,k), а именно:
H(n, k) = |R*(k,r), I(k)|
I(k) - единичная матрица
R*(k,r) - матрица в транспонированном виде из G(n,k)
У меня получилась такая проверочная матрица:
0 1 1 1 | 1 0 0
1 0 1 1 | 0 1 0
1 1 0 1 | 0 0 1
умножаю на требуемы сообщения получил:
(0010100) H* = (0, 1, 0) - 2 позиция
(0011110) H* = (1, 1, 1) - 7 позиция
(1100110) H* = (0, 0, 0) - сообщение верно
НО В ОТВЕТЕ:
проверочная матрица имеет вид:
0 0 0 1 1 1 1
0 1 1 0 0 1 1
1 0 1 0 1 0 1
как я заметил по виду она такая же но просто упорядоченная по столбцам следовательно при умножении сообщений я получаю совершенно другие синдромы:
(0010100) H* = (1, 1, 0) - 6 позиция
(0011110) H* = (1, 0, 0) - 4 позиция
(1100110) H* = (0, 0, 0) - сообщение верно
ВОПРОС:
Объясните пожалуйста почему матрица имеет именно такой вид? у меня уже истерика)
Естественные науки
Линейный блочный код, коды Хеминга, Порождающая матрица и Проверочная матрица.
Я не особый спец по этому вопросу, особенно в теории, но решение задачи о поиске позиции ошибки могу дать:
Значит код Хэмминга, общий вид (n,k), где k- количество информационных символов, n - всех.
Общая суть - согнать воедино 2 кода антипода: с проверкой на четность и с повторением. Первый быстро обнаруживает факт ошибки, но не находит ее. Второй исправляет любое число ошибок, но затратен по времени.
В примере, так понимаю, классический код (7,4). Ещё понадобится разница k'=n-k (в примере k'=3)
Теперь необходимо строить проверочную и кодирующую матрицы. Начинают с проверочной H, но нам потребуется транспонированная к ней. Строится так: внизу единичная матрица размерности k' *k', строки сверху заполняются с расчетом, что не должно быть повторяющихся. И нулевую тоже не следует писать. Это задается рандомно и не суть как, лишь бы выполнялись эти условия.
Кодирующая матрица G строится просто. Все внимание на схему!! ! Здесь нижние индексы обозначают количество строк и столбцов у матриц. a - исходное слово из к символов, с - слово из n символов (наше a с k' дополнительными ), c' - слово с с одной ошибкой. Как получается Ht и G - также описал выше и на схеме.
Так вот, три строки снизу на картинке - процесс кодирования и декодирования с исправлением одной ошибки, возникаемой при шумах.
На сколько я понимаю, в твоем случае 1й шаг уже сделан и получено сообщение c либо c' (я не знаю на данный момент, содержит ли оно ошибку) .
Теперь иду на шаг 3) и умножаю c' *Ht. (помним, что все операции по mod 2!) В результате получу вектор 1*k'. Если все элементы вектора нули, то ошибки не было. Иначе смотрим в матрицу Ht и ищем, в какую строку входит наш вектор.
Номер строки, в которую он входит - номер позиции ошибки в слове c'
Собственно все.
Единственное что. Все эти операции я проделывал полностью по алгоритму, т. е. исходил из слова a. Хотя думаю, что и при заданном слове c' рассуждения аналогичны, просто мне не пришлось с помощью G добавлять эти k' дополнительных символа.
Итак, у тебя дано слово, например последнее, c'=1100110. Достроишь матрицу Ht(7*3). В произведении получится строка st(1*3)
Ищешь st(1*3) в Ht(7*3), номер строки, куда входит - номер позиции ошибки в c'.
Удачи!
Значит код Хэмминга, общий вид (n,k), где k- количество информационных символов, n - всех.
Общая суть - согнать воедино 2 кода антипода: с проверкой на четность и с повторением. Первый быстро обнаруживает факт ошибки, но не находит ее. Второй исправляет любое число ошибок, но затратен по времени.
В примере, так понимаю, классический код (7,4). Ещё понадобится разница k'=n-k (в примере k'=3)
Теперь необходимо строить проверочную и кодирующую матрицы. Начинают с проверочной H, но нам потребуется транспонированная к ней. Строится так: внизу единичная матрица размерности k' *k', строки сверху заполняются с расчетом, что не должно быть повторяющихся. И нулевую тоже не следует писать. Это задается рандомно и не суть как, лишь бы выполнялись эти условия.
Кодирующая матрица G строится просто. Все внимание на схему!! ! Здесь нижние индексы обозначают количество строк и столбцов у матриц. a - исходное слово из к символов, с - слово из n символов (наше a с k' дополнительными ), c' - слово с с одной ошибкой. Как получается Ht и G - также описал выше и на схеме.

Так вот, три строки снизу на картинке - процесс кодирования и декодирования с исправлением одной ошибки, возникаемой при шумах.
На сколько я понимаю, в твоем случае 1й шаг уже сделан и получено сообщение c либо c' (я не знаю на данный момент, содержит ли оно ошибку) .
Теперь иду на шаг 3) и умножаю c' *Ht. (помним, что все операции по mod 2!) В результате получу вектор 1*k'. Если все элементы вектора нули, то ошибки не было. Иначе смотрим в матрицу Ht и ищем, в какую строку входит наш вектор.
Номер строки, в которую он входит - номер позиции ошибки в слове c'
Собственно все.
Единственное что. Все эти операции я проделывал полностью по алгоритму, т. е. исходил из слова a. Хотя думаю, что и при заданном слове c' рассуждения аналогичны, просто мне не пришлось с помощью G добавлять эти k' дополнительных символа.
Итак, у тебя дано слово, например последнее, c'=1100110. Достроишь матрицу Ht(7*3). В произведении получится строка st(1*3)
Ищешь st(1*3) в Ht(7*3), номер строки, куда входит - номер позиции ошибки в c'.
Удачи!
Здравствуйте! Можете пожалуйста объяснить как в блочном кодировании сообщение переводится в блочный код
Вектор сообщенияКодовое слово
000 000000
100 110100
010 011010
110 101110
001 101001
101 011101
011 110011
111 000111
Вектор сообщенияКодовое слово
000 000000
100 110100
010 011010
110 101110
001 101001
101 011101
011 110011
111 000111
Похожие вопросы
- скажите человеческим языком что такое есть линейная зависемость и не зависемость (для матриц)
- Геометрический смысл работы с матрицами и применение аксиом линейной алгебры на практике
- Генетический код Человека настолько сложен мог ли он обознаваться в результате слепова СлучиЯ ???
- Вопрос о зависимости анатомии организма от кода ДНК.
- Задача про Васю забывший код,помогите
- Генетический код
- В самом деле по этим кодам можно определить, есть подслушка или нет ?
- в чем принципиальные отличия "генетической информации" от "генетического кода"??
- Верите ли вы,что генетический код человека разгадан,и вообще,реально ли такое утверждение?
- Есть ли какая-то закономерность в линейном преобразовании матрицы методом Гаусса?