📄 frequence_hopping1.m
字号:
function [ code1] = frequence_hopping1( )
n = 6; %寄存器阶数
taps = [6 1]; %抽头位置,本原多项式,可以自己设置(需要查表,因为仅有有限个)
R=1; %时钟参数 ,可以自己设置
init= [1 1 0 1 0 0]; %寄存器初始状态,可以自己设置
contr=[0 1 5]; %控制级向量,用三个不相临的控制级,(第一个数字表示起始控制级,后面两个表示相对第一个的递增级数,即选第0级,也选第2级和第4级)可以自己设置
u = [0 0 0]; %用户向量组 修改为单用户
[h,l]=size(u);
p=2^n-1; %周期长度
m=ms1(n,taps,init,p); %由f(x)=x^6+x^5+1产生的m序列
a=m; %a表示控制序列
s=size(m); %监控m序列的规模,调试用,对程序无影响,可删除
for i=1:h
for j=1:p
w1=j+contr(1); %当前循环应当处理的序列序号
w2=j+contr(2);
w3=j+contr(3);
while w3>p
w3=rem(w3,p);
end
while w2>p
w2=rem(w2,p);
end
while w1>p
w1=rem(w1,p);
end
W(i,j) = 4*xor(a(w1),u(i,1))+2*xor(a(w2),u(i,2))+xor(a(w3),u(i,3)); %xor即模2和,rem(x,p)是求以63为周期后的位置,用三个不相临的控制级,即非连续抽头
if R~=1 %不同的时钟比值不会等于1,若相等为L-G模型
for x=1:R %移R位
numb=a(p); %末尾先存入临时变量
a(2:p) = a(1:p-1); % 移位运算
a(1)= numb; % 原来的最后一位给第一位
end
end
end
end
code1=W(1,:);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -