MATLAB deconv 与多项式二进制除法

MATLAB's gfdeconv vs. polynomial binary division

我读过 Ross N. Williams 的 A Painless Guide to CRC Error Detection Algorithms,他在其中使用二进制除法来获得原始消息 1101011011 和多边形 10011 的除法余数。他到达 1110.

的剩余部分

我一直在尝试在上面的示例中使用 MATLAB 的 gfdeconvdocumentation 中的描述说函数 "divides polynomials over Galois field"。我在 MATLAB 中输入了以下内容:

[~, remd] = gfdeconv([1 1 0 1 0 1 1 0 1 1], [1 0 0 1 1]) 

但是,我得到了 [0 0 1] 的剩余部分。

我是不是漏掉了什么?为什么 MATLAB 的 gfdeconv 不能产生与 Williams 示例中的示例相同的余数?我知道我可能想翻转 and/or 转置 poly and/or 原始消息,但我不确定该方法。

谢谢。

您需要按其他顺序提供系数,即系数 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 是预期结果,也是最低有效位在前。