Matlab生成M序列的偽隨機碼


     偽隨機編碼中較常用的是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














免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM