matlab生成格雷码(Gray Code)

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

最简单的格雷码是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
%hint:
%0 => 0   0  => 00  10 =>00  => 00  00 => 0 00  1 00......
%1    1   1     01  11   01     01  01    0 01  1 01
%                        11     11  11    0 11  1 11
%                        10     10  10    0 10  1 10
%
function gray_code=gen_gray_code(N)
sub_gray=[0;1];
for n=2:N
    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

 

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值