Gfdeconv против полиномиального двоичного деления в MATLAB
Я прочитал "Безболезненное руководство по алгоритмам обнаружения ошибок CRC " Росса Н. Уильямса, где он использует двоичное деление, чтобы получить остаток от деления исходного сообщения 1101011011
и поли 10011
, Он прибывает на остаток 1110
,
Я пытался использовать gfdeconv MATLAB с приведенным выше примером. В описании в документации говорится, что функция "делит многочлены на поле Галуа". Я ввел следующее в MATLAB:
[~, remd] = gfdeconv([1 1 0 1 0 1 1 0 1 1], [1 0 0 1 1])
Тем не менее, я получаю остаток от [0 0 1]
,
Я что-то здесь упускаю? Почему gfdeconv MATLAB не выдает тот же остаток, что и в примере из примера Williams? Я понимаю, что я, вероятно, предполагаю перевернуть и / или транспонировать поли и / или оригинальное сообщение, но я не уверен в методе.
Спасибо.
1 ответ
Вы должны предоставить коэффициенты в другом порядке, то есть коэффициент 1 (x0) в первую очередь. Затем вам нужно сначала добавить добавленные нули, поэтому правильное использование:
[q, r] = gfdeconv([0 0 0 0 1 1 0 1 1 0 1 0 1 1], [1 1 0 0 1])
Результат:
q =
0 1 0 1 0 0 0 0 1 1
r =
0 1 1 1
где r
является ожидаемым результатом, также с младшим битом первым.