MATLAB deconv 与多项式二进制除法
MATLAB's gfdeconv vs. polynomial binary division
我读过 Ross N. Williams 的 A Painless Guide to CRC Error Detection Algorithms,他在其中使用二进制除法来获得原始消息 1101011011
和多边形 10011
的除法余数。他到达 1110
.
的剩余部分
我一直在尝试在上面的示例中使用 MATLAB 的 gfdeconv。 documentation 中的描述说函数 "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
是预期结果,也是最低有效位在前。
我读过 Ross N. Williams 的 A Painless Guide to CRC Error Detection Algorithms,他在其中使用二进制除法来获得原始消息 1101011011
和多边形 10011
的除法余数。他到达 1110
.
我一直在尝试在上面的示例中使用 MATLAB 的 gfdeconv。 documentation 中的描述说函数 "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
是预期结果,也是最低有效位在前。