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
上一篇: Shell 中的一些好的实践
下一篇: 循环Gray码的生成(递归)