加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

本原多项式产生的m序列

(2010-01-03 10:23:10)
标签:

杂谈

分类: matlab

在实验中发现在m序列的产生过程中,即使使用本原多项式的系数作为反馈逻辑,寄存器的状态也不能遍历除全0以外的所有状态。例如,用1 1 1 1 1 1 1 1作为初态,0 1 1 1 0 0 0 1(从低位到高位排列)作为反馈逻辑,产生的m序列m(2:9)=1 1 1 1 1 1 1 0.  而m(129:136)= 1 1 1 1 1 1 1 0  可见在m(2)时

刻和在m(129)时刻寄存器组的状态是完全一样的,由此可知,m(2:128)=m(129:255),所以实际上产生m序列虽然周期为255实际上是 1 m(2:128) m(2:128),更像是周期为127的序列。所以8位寄存器产生的255位m序列其自相关特性并不理想。根据以上分析,如果取其中127位,得到的序列应当所有较好的相关特性。在此用matlab进行了仿真,结果如下:

   图1为8位寄存器产生的255位m序列(反馈逻辑0 1 1 1 0 0 0 1),取其前127位,的自相关特性。

   图2 为上述m序列取全255位所得序列的自相关特性。

   图3 为8位寄存器产生的255位m序列(反馈逻辑0 1 0 0 1 1 0 1),其自相关特性。

http://s11/middle/5ee4bc0047c39b659ddea&690

可见,将m序列取全,其自相关特性并不好,在0.5倍周期时出现相关峰

若取m序列中的一半,其自相关特性有大的改善。

不同反馈逻辑产生的m序列其自相关特性有差异。

clear all
T=1;%m序列周期时间长度
N_sample=8;%每个码元取样点数
N=127;%m序列周期
dt=T/(N_sample*N);%样点间时间间隔
t=0:dt:10*T-dt;%时间坐标
X=[1 1 1 1 1 1 1 1];%m序列初相
C=[0 1 1 1 0 0 0 1];%反馈逻辑
Y=m_sequence(X,C);%产生m序列
Y1=Y(1:127);%取一半
matrix1=zeros(N,10);%产生10个周期的m序列
m_se=zeros(1,10*N);
for i=1:10
      m_se(i*N-N+1:i*N)=Y1;
end

matrix_sample=zeros(N_sample,10*N);%取样
for i=1:N_sample
       matrix_sample(i,:)=m_se;
 end
m_se_sam=reshape(matrix_sample,1,N*10*N_sample);
m_se_sam=1-2*m_se_sam;
m_se_sam1=m_se_sam(1:T/dt);%取一个周期
[a,b]=xcorr(m_se_sam1,m_se_sam);%求自相关
subplot(311)
plot(b*dt,a)

N=255;
dt=T/(N_sample*N);
t=0:dt:10*T-dt;
Y1=Y;
matrix1=zeros(N,10);
m_se=zeros(1,10*N);
for i=1:10
      m_se(i*N-N+1:i*N)=Y1;
end

matrix_sample=zeros(N_sample,10*N);
for i=1:N_sample
       matrix_sample(i,:)=m_se;
 end
m_se_sam=reshape(matrix_sample,1,N*10*N_sample);
m_se_sam=1-2*m_se_sam;
m_se_sam1=m_se_sam(1:T/dt);
[a,b]=xcorr(m_se_sam1,m_se_sam);
subplot(312)
plot(b*dt,a)

N=255;
dt=T/(N_sample*N);
t=0:dt:10*T-dt;
X=[1 1 1 1 1 1 1 1];
C=[0 1 0 0 1 1 0 1];
Y=m_sequence(X,C);
m_se=zeros(1,10*N);
for i=1:10
      m_se(i*N-N+1:i*N)=Y;
end

matrix_sample=zeros(N_sample,10*N);
for i=1:N_sample
       matrix_sample(i,:)=m_se;
 end
m_se_sam=reshape(matrix_sample,1,N*10*N_sample);
m_se_sam=1-2*m_se_sam;
m_se_sam1=m_se_sam(1:T/dt);
[a,b]=xcorr(m_se_sam1,m_se_sam);
subplot(313)
plot(b*dt,a);

 

 

 

 

现在发现是我错了,原因是产生m序列的子函数写错了。

改正之后再画出3个序列的自相关函数的图像。如下。

http://s6/middle/5ee4bc0047c57fd1db005&690

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有