为什么我计算的结果与matlab计算的结果不同?

为什么我计算的结果与matlab计算的结果不同?,matlab,encode,hamming-code,Matlab,Encode,Hamming Code,以下是matlab的答案: x=[1,0,1,1] x_encode=encode(x,7,4) >>x_encode [1,0,0,1,0,1,1] 我根据汉明码的定义计算了汉明码,下面是我的计算过程: 2^r≥k+r+1 Here,k=4 2^r≥5+r r=3 n=k+r=7 encode:[r1,r2,1,r3,0,1,1] r1->[r1,1,0,1]、r2->[r2,1,1,1]、r3->[r3,0,1,1] 如果我使用奇数奇偶校验位,那么它会像

以下是matlab的答案:

x=[1,0,1,1]

x_encode=encode(x,7,4)

>>x_encode [1,0,0,1,0,1,1]
我根据汉明码的定义计算了汉明码,下面是我的计算过程:

2^r≥k+r+1
Here,k=4
2^r≥5+r
r=3
n=k+r=7
encode:[r1,r2,1,r3,0,1,1]
r1->[r1,1,0,1]、r2->[r2,1,1,1]、r3->[r3,0,1,1]
如果我使用奇数奇偶校验位,那么它会像:

r1=1,r2=0,r3=1
>>x_encode [1,0,1,1,0,1,1]
r1=0,r2=1,r3=0
>>x_encode [0,1,1,0,0,1,1]
但如果我使用偶数奇偶校验位,它会像:

r1=1,r2=0,r3=1
>>x_encode [1,0,1,1,0,1,1]
r1=0,r2=1,r3=0
>>x_encode [0,1,1,0,0,1,1]
以上结果均不等于matlab计算的结果。 我不知道为什么,如果有人能回答我的问题,我会平息的。
谢谢

您可以在Matlab中打开
encode
函数。相应地,该函数计算以下步骤:

m = n-k;
h = hammgen(m);
gen = gen2par(h);
code = rem(x * gen, 2);

尝试一步一步地检查这些命令的作用以及它们与经典汉明码的区别。

我不知道“打开”功能,谢谢!你真的让我大开眼界。但我仍然想知道为什么matlab使用这种编码方法而不是定义。我怀疑我的知识是否错了。看来Matlab使用了不同的奇偶校验矩阵。请看一下hammgen的
功能。它返回一个矩阵,其中奇偶校验位是通过考虑(x1,x3,x4),(x1,x2,x3),(x2,x3,x4)来计算的,而中报告的奇偶校验矩阵是通过考虑其他组合来设计的。下面是使用Matlab代码进行编码和解码的详细链接: