信息论作业中有一道题目要求判断两个生成函数g1(x)和g2(x)构成的(2,1,m)卷积码是否为恶性卷积码。解题的关键是判断两多项式g1(x)和g2(x)是否有非常数的公因式。一种办法是:在GF(2)域上求两多项式的最大公因式。若最大公因式不是常数,则两多项式构成的卷积码是恶性卷积码。
在matlab的help文件里查了下,没有找到现成的GF(2)域求两多项式最大公因式的函数,于是自己动手写了一个。代码附在下面。
被注释掉的代码是第一个版本。当时不知道有个现成的gfdeconv函数可以直接在GF(2)计算多项式除法,因此写得笨笨的。知道以后就改写现在的样子。不过值得注意的是,与一般的翻卷积函数不同,gfdeconv函数把向量看做升幂排列的多项式。
clear;
%在GF(2)域中求两多项式的最大公因式
%注意多项式是降幂排列的还是升幂排列的
% b(x) = x^2, a(x) = x^3 + x^2 + 1
%降幂排列表示