M系列符号の生成

トランジスタ技術(2012/8)のKinect特集でM系列符号が使われていて、面白そうなので、MATLABで実装してみた。

コード

%% M系列符号
clear;
N = 3;
M = 5;
R = randi([0 1], M,1);
nP = 2^M-1;
B = zeros(nP*30, 1);

% 生成
for iP = 1:nP*30
    R = [xor(R(N),R(end)); R(1:end-1)];    
    B(iP) = R(1);
end

% 結果
figure(1);
subplot(2,1,1);
plot(-40:40,xcorr(B(1:1:end),40,'coeff'));
subplot(2,1,2);
plot(-40:40,xcorr(B(1:10:end),40,'coeff'));

結果

f:id:nosyan:20120723161031p:plain
自己相関のプロット。

理論では周期は2^M-1=31で、実験結果もちゃんとその周期となった。
(キレイに相関が出ていないのは、MATLABのxcorrの処理が原因?)
生成した符号の部分集合でも、周期が同じであった。
面白い。