1. 程式人生 > >在matlab中生成m序列

在matlab中生成m序列

               

實驗環境為matlab2013b

1、首先編寫一個mseq.m檔案,內容為:

function[mseq]=m_sequence(fbconnection) n=length(fbconnection); N=2^n-1;  register=[zeros(1,n-1) 1];  %移位暫存器的初始狀態 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    

2、在matlab中開啟這個檔案

3、在matlab的命令列視窗中執行

primpoly(7,'all')

這個命令的目的是得到7階M序列的所有本原多項式,如果想得到其他階的m序列,自行修改數字7即可。

4、得到的結果為

Primitive polynomial(s) =  D^7+D^1+1D^7+D^3+1D^7+D^3+D^2+D^1+1D^7+D^4+1D^7+D^4+D^3+D^2+1D^7+D^5+D^2+D^1+1D^7+D^5+D^3+D^1+1D^7+D^5+D^4+D^3+1D^7+D^5+D^4+D^3+D^2+D^1+1D^7+D^6+1D^7+D^6+D^3+D^1+1D^7+D^6+D^4+D^1+1D^7+D^6+D^4+D^2+1D^7+D^6+D^5+D^2+1D^7+D^6+D^5+D^3+D^2+D^1+1D^7+D^6+D^5+D^4+1D^7+D^6+D^5+D^4+D^2+D^1+1D^7+D^6+D^5+D^4+D^3+D^2+1ans =   131   137   143   145   157   167   171   185   191   193   203   211   213   229   239   241   247   253

5、輸入mseq([1 0 0 0 0 0 1])

6、便可得到一個127位的m序列,整理之後為

1000000111111101010100110011101110100101100011011110110101101100100100011100001011111001010111001101000100111100010100001100000

說明,

1 0 0 0   0 0 1這個輸入引數的物理意義為各暫存器的初始狀態,其數學意義是所選用的本原多項式D^7+D^1+1中D^1到D^7的各個係數。讀者可以試試自行選用其他本原多項式,得到不同的m序列。

例如如果選用D^7+D^3+1,則只需呼叫

mseq([0 0 1 0 0 0 1]),得到的m序列為

10000001001001101001111011100001111111000111011000101001011111010101000010110111100111001010110

01100000110110101110100011001000