欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

matlab生成格雷码(Gray Code)

程序员文章站 2022-07-12 12:43:05
...

一组格雷码的相邻两个码只有一个二进制位不同,现在介绍一种生成这种码的方法。

最简单的格雷码是0、1。

0
1

将其复制,得到两组格雷码,确保每行相同,

0  0
1  1

再对每个格雷码开头填0 或1,每一列填的数要相同

00  10
01  11

再按U型连接起来,就得到两位的格雷码,如下:

00
01
11
10

类似的,可以得到任意位数的格雷码。

matlab代码如下

%generate gray code,first data is 0 vector
%N>=2
function gray_code=gen_gray_code(N)
sub_gray=[0;1];
for n=2:N
    if N==2
        gray_code=sub_gray;
    elseif N>2
        top_gray=[zeros(1,2^(n-1))' sub_gray];
        bottom_gray=[ones(1,2^(n-1))' sub_gray];
        bottom_gray=bottom_gray(end:-1:1,:);
        sub_gray=[top_gray;bottom_gray];
    end
gray_code=sub_gray;
end
>> gen_gray_code(4)
ans =

     0     0     0     0
     0     0     0     1
     0     0     1     1
     0     0     1     0
     0     1     1     0
     0     1     1     1
     0     1     0     1
     0     1     0     0
     1     1     0     0
     1     1     0     1
     1     1     1     1
     1     1     1     0
     1     0     1     0
     1     0     1     1
     1     0     0     1
     1     0     0     0