偽隨機編碼中較常用的是m序列,它是線性反饋移位寄存器序列的一種,其特點是在相同寄存器級數的情況下輸出序列周期最長。線性反饋移位寄存器的工作原理是,給定所有寄存器一個初始值,當移位脈沖到來時,將最后一級寄存器的值輸出,同時將第 i級的寄存器內容存儲到第 i+1 級中,此外將每一級的寄存器輸出按照一定的線性運算規則計算出一個值,並將該值存入第一級寄存器中。隨着移位脈沖的累加,線性反饋移位寄存器的輸出可以組成一個序列,稱之為移位寄存器序列[71]。
圖3.5 線性反饋移位寄存器
MATLAB生成M序列偽隨機碼函數如下:
% 在MATLAB命令窗口輸入以下: % fbconnection=[0 1 1 0 1 0 0 0 0 0 0 0 0 0 0
% 1];本原多項式系數:[d0,d1,d2...di];其中di為本原多項式前的系數
% mseq=m_sequence(fbconnection); % mseq
%m_sequence.m功能是生成偽隨機序列
%time:2016_1_13
%edit by:柴寧
function[mseq]=m_sequence(fbconnection)
n=length(fbconnection);
N=2^n-1;
% register=[zeros(1,n-1) 1];
register=[1 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1];%移位寄存器的初始狀態 ,[r(i),r(i-1),r(i-2),...r(0)];
mseq(1)=register(n);
%m序列的第一個輸出碼元
for i=2:N
newregister(1)=mod(sum(fbconnection.*register),2);
for j=2:n,
newregister(j)=register(j-1);
end;
register=newregister;
mseq(i)=register(n);
end