📄 m_producer.m
字号:
function [d,s]=m_producer(le,w)
%%这是私自开发的用于产生m序列的小程序
%%版权所有,不可用于商业用途
%%参数介绍
%输入参数: level: 用于指定m序列的级数
% w: 所需序列的长度
%输出参数: d:产生的m序列
% s:对应的移位寄存器的各个状态
if(nargin==1)
w=2^le-1;
end
if (le==2)
a=[1 0];
e=zeros(1,le);
for j=1:w;
e(1)=a(1);e(2)=a(2);
a(1)=mod((a(1)+a(2)),2);
a(2)=e(1);
s(:,j)=[a(1) a(2)];
d(j)=a(2);
d(j)=2*d(j)-1;
end
elseif (le==3)
a=[ 0 1 0];
e=zeros(1,le);
for j=1:w;
e(1)=a(1);e(2)=a(2),e(3)=a(3);
a(1)=mod((a(1)+a(3)),2);
a(2)=e(1);
a(3)=e(2);
s(:,j)=[a(1) a(2) a(3)];
d(j)=a(3);
d(j)=2*d(j)-1;
end
elseif(le==4)
a=[0 0 0 1];
e=zeros(1,le);
for j=1:w;
e(1)=a(1);e(2)=a(2);e(3)=a(3);e(4)=a(4);
a(1)=mod((a(4)+a(3)),2);
a(2)=e(1);
a(3)=e(2);
a(4)=e(3);
s(:,j)=[a(1) a(2) a(3) a(4)];
d(j)=a(4);
d(j)=2*d(j)-1;
end
elseif(le==5)
a=[0 0 0 1 0];
e=zeros(1,le);
for j=1:w;
e=a;
a(1)=mod((a(5)+a(3)),2);
a(2)=e(1);
a(3)=e(2);
a(4)=e(3);
a(5)=e(4);
s(:,j)=[a(1) a(2) a(3) a(4) a(5)];
d(j)=2*a(5)-1;
end
elseif(le==6)
a=[0 0 0 0 0 1];
e=zeros(1,le);
for j=1:w;
e=a;
a(1)=mod((a(6)+a(5)),2);
a(2)=e(1);
a(3)=e(2);
a(4)=e(3);
a(5)=e(4);
a(6)=e(5);
s(:,j)=[a(1) a(2) a(3) a(4) a(5) a(6)];
d(j)=2*a(6)-1;
end
elseif(le==7);
a=[0 0 0 0 0 1 1];
e=zeros(1,le);
for j=1:w;
e=a;
a(1)=mod((a(7)+a(6)),2);
a(2)=e(1);
a(3)=e(2);
a(4)=e(3);
a(5)=e(4);
a(6)=e(5);
a(7)=e(6);
s(:,j)=[a(1) a(2) a(3) a(4) a(5) a(6) a(7)];
d(j)=2*a(7)-1;
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -