我想用奇偶校验矩阵对信息块进行编码。
我的汉明码(7,4,3)
带有奇偶校验矩阵H
,我想对信息块m = [0 0 1]
进行编码。
H = [1 1 0 1 1 0 0
1 0 1 1 0 1 0
0 1 1 1 0 0 1];
使用生成器矩阵我只使用这个公式:codeword = mod(word*G,2)
,但我不知道如何使用奇偶校验矩阵进行编码。
谢谢!
答案 0 :(得分:1)
正如前面提到的here,对于编码,你应该使用生成矩阵(G)而不是奇偶校验矩阵(因为它的名字显示了这一点!)。因此,编码矢量将是G*m'
。
答案 1 :(得分:0)
如前一个答案所述,您需要获取生成器矩阵才能进行编码。如果生成器和奇偶矩阵是标准形式,则在生成器和奇偶矩阵之间进行转换很简单,这要求代码在前k个位置处系统化(请参见[1])。
如果奇偶矩阵不是这种形式,则可以使用基本行操作将其放入标准形式,然后获得生成器矩阵(请参见[4])。这会将代码更改为其他但“等效”的代码(请参见[5])。
我的粗略搜索没有发现从任意奇偶校验矩阵中找到生成器矩阵的其他方法。我怀疑这样做是困难,不切实际或不可能的,但我没有明确的答案。
参考和讨论
请注意,这些参考文献不一定具有权威性。但我发现它们是合理和合理的。
[1] https://en.wikipedia.org/wiki/Parity-check_matrix 对于(n,k)分组码,生成器矩阵的标准形式为G = [I(k)P]。 G是一个(k,n)矩阵。 I(k)是(k,k)单位矩阵。 P是一个(k,n-k)矩阵。
则奇偶矩阵为H = [-P ^ T I(n-k)]。 H是(n-k,n)奇偶矩阵,对应于G。 -P ^ T是P的负移位。您可以忽略对二进制代码的求反。 I(n-k)是(n-k,n-k)个单位矩阵。
因此,如果您具有我所示形式的奇偶校验矩阵,则生成器矩阵为G = [I(k)P]。
[2] Pless,Vera(1998),《纠错码理论导论》(第三版),Wiley Interscience,ISBN 0-471-19047-0。这被[1]引用。
[3] https://www.mathworks.com/help/comm/ref/gen2par.html Matlab提供了在生成器/奇偶校验(gen2par)之间进行转换的功能,但它似乎需要标准格式。该功能似乎依赖于此标准格式来检测您提供的哪个,然后将其更改为另一个。
[4] https://math.stackexchange.com/questions/1490627/finding-generator-matrix-for-binary-linear-code-given-parity-check-matrix 该参考文献建议使用基本行操作将奇偶校验矩阵转换为标准形式,然后转换为生成器矩阵。
[5] https://math.stackexchange.com/questions/1684808/row-column-operations-of-a-parity-check-generator-matrix-for-a-linear-code 此参考资料说明对奇偶校验或生成器矩阵的基本行操作将更改代码,因为特定输入集的编码表示将更改,但是由于该代码字集(因此具有距离属性),该代码可能被视为“等效”不变。