📄 m_serial.m
字号:
function Y = M_serial(M_Len)
% 产生伪随机的4~16bit长度的序列
% M_Len为寄存器长度
% Y 为输出的状态寄存器值向量,寄存器初始值随机产生,则Y随机
clc;
M_Len = 4;
switch M_Len
case 3
Genertor = [1,0,1]; % 0 1 3
case 4
Genertor = [0,0,1,1]; % 0 3 4
case 5
Genertor = [0,1,0,0,1]; % 0 2 5
case 5
Genertor = [0,1,0,0,1]; % 0 2 5
case 6
Genertor = [1,0,0,0,0,1]; % 0 1 6
case 7
Genertor = [0,0,1,0,0,0,1]; % 0 3 7
case 8
Genertor = [0,1,1,1,0,0,0,1]; % 0 2 3 4 8
case 9
Genertor = [0,0,0,1,0,0,0,0,1]; % 0 4 9
case 10 % 1024
Genertor = [0,0,1,0,0,0,0,0,0,1]; % 0 3 10
case 11
Genertor = [0,1,0,0,0,0,0,0,0,0,1]; % 0 2 11
case 12
Genertor = [1,0,0,1,0,1,0,0,0,0,0,1]; % 0 1 4 6 12
case 13
Genertor = [1,0,1,1,0,0,0,0,0,0,0,0,1]; % 0 1 3 4 13
case 14 %-----------16384
Genertor = [1,0,0,0,0,1,0,0,0,1,0,0,0,1]; % 0 1 6 10 14
case 15
Genertor = [1,0,0,0,0,0,0,0,0,0,0,0,0,0,1]; % 0 1 15
case 16
Genertor = [1,0,1,0,0,0,0,0,0,0,0,1,0,0,0,1];
otherwise
Genertor =[];
end
Mem0 = round(rand(1,M_Len));
while(sum(Mem0)==0)
Mem0 = round(rand(1,M_Len));
end
% 生成多项式为16 12 3 1 0
Mem = Mem0;
% fprintf('%s\n',num2str(Mem));
M(1)=0;
for k=1:M_Len
M(1) = M(1) + Mem(k)*2^(M_Len-k);
end
% plot(0,M,'r.');hold on;
for i=1:2^M_Len-1
GenFactor = mod( sum(Mem.*Genertor), 2);
Mem(2:M_Len) = Mem(1:M_Len-1);
Mem(1) = GenFactor;%mod(sum(GenFactor),2);
% fprintf('%s\n',num2str(Mem));
M(i+1)=0;
for k=1:M_Len
M(i+1) = M(i+1) + Mem(k)*2^(M_Len-k);
end
% plot(i,M,'r.');hold on;
end
% plot(M,'r');hold on;plot(M,'b*');grid,axis tight
% bitxor(M(3),0)
% bitxor(M(3),1)
% bitxor(M(3),2)
% bitxor(M(3),3)
% bitxor(M(3),4)
Y=bitand(M,15);%mod(M,11);
% Y(1:10)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -