📄 kuanjiange_seq.m
字号:
% kuanjiange_seq.m
% 构造宽间隔跳频序列
% 生成宽间隔跳频序列
% sequence1 和 sequence2 是两个序列,所构造的宽间隔序列在两个序列间跳取而得,原理参看
% 《跳频通信》一书 P75-P77
% 仿真时:在进行判定时,要对大于跳频间隔 d 进行判定,d = 2.
clear;
clc
% ************************** preparations *********************************
stg = 6;
taps = [1,6];
inidata = [0,0,0,0,0,1];
len = 2^stg-1;
nd = 8; % 序列族中序列数目
d = 2; % 跳频间隔
q = 16; % 跳频频隙数
%**************************************************************************
% stg : Number of stages
% taps : Position of register feedback
% inidata : Initial sequence
% mout : output m sequence
%**************************************************************************
m = mseq(stg,taps,inidata,len); % n = 1 生成一非零m状态序列
% m = [1 0 0 1 1 1 0]
a = m(58,:);
W = zeros(nd,len);
u = [0 0 0;0 0 1;0 1 0;0 1 1;1 0 0;1 0 1;1 1 0;1 1 1;];
%********************************计算W*************************************
for i = 1 : nd
for j = 1 : len
if j <= len-4
W(i,j) = 4*xor(a(j),u(i,1))+2*xor(a(j+2),u(i,2))+...
xor(a(j+4),u(i,3));
elseif j == len-3
W(i,j) = 4*xor(a(j),u(i,1))+2*xor(a(j+2),u(i,2))+...
xor(a(rem(j+4,len)),u(i,3));
elseif j == len-2
W(i,j) = 4*xor(a(j),u(i,1))+2*xor(a(j+2),u(i,2))+...
xor(a(rem(j+4,len)),u(i,3));
elseif j >= len-1
W(i,j) = 4*xor(a(j),u(i,1))+2*xor(a(rem(j+2,len)),u(i,2))+...
xor(a(rem(j+4,len)),u(i,3));
end
end
end
%*************************** 结束序列计算 ********************************
sequence1 = W(1,:);
% 7 7 6 7 4 7 0 7 1 6 2 5 5 2 3 5 7 2 7 5 6 3 4 6 1 4 2 1
% 5 3 2 6 4 5 0 3 1 7 3 6 6 5 4 3 0 6 0 5 1 2 2 4 4 1 0 2
% 0 4 0 1 1 3 3
sequence2 = sequence1+floor((q+1)/2);
% 15 15 14 15 12 15 8 15 9 14 10 13 13 10 11 13 15 10 15 13 14 11 12 14 9
% 12 10 9 13 11 10 14 12 13 8 11 9 15 11 14 14 13 12 11 8 14 8 13 9 10
% 10 12 12 9 8 10 8 12 8 9 9 11 11
N3 = length(sequence1);
% *************************************************************************
wide_interval = zeros(1,len);
wide_interval(1) = sequence1(1);
% 宽间隔先取F1上的第一个值
flag = 0;
% 所在频带标志,为0在F1上,为1在其对偶频带上
% *************************** 开始计算宽间隔序列 ***************************
for i = 1:(len-1)
if flag == 0 % 在F1上
if abs(sequence1(i+1)-wide_interval(i)) > d % 先判断F1
wide_interval(i+1) = sequence1(i+1); % 在F1上满足d时,下一跳仍在F1上跳
flag = 0; % 频带标志仍置0
else % 跳到对偶频带F2上
wide_interval(i+1) = sequence2(i+1); % 在F1上不满足时跳转到F2上,看是否满足跳频间隔d
% 在F2上满足d时,下一次仍在F2上跳
flag = 1; % 频带标志置为1
end
end
if flag == 1 % 在对偶频带F2上
if abs(sequence2(i+1)-wide_interval(i)) > d % 先判断F1
wide_interval(i+1) = sequence2(i+1); % 在F2上满足d时,下一跳仍在F2上跳
flag = 1; % 仍置频带标志为1
else
wide_interval(i+1) = sequence1(i+1); % 在F2上不满足时跳转到F1上,看是否满足跳频间隔d
% 在F2上满足d时,下一次仍在F2上跳
flag = 0; % 置频带标志为0
end
end
end
disp(wide_interval) % 显示出此
% ******************************* end of file *****************************
% Columns 1 through 14
%
% 7 15 6 15 12 15 8 15 9 14 10 13 5 2
%
% Columns 15 through 28
%
% 11 5 15 10 15 5 14 11 4 14 9 12 2 9
%
% Columns 29 through 42
%
% 13 3 10 14 4 13 8 11 1 7 3 6 14 5
%
% Columns 43 through 56
%
% 12 3 0 6 0 5 1 10 2 12 4 1 8 2
%
% Columns 57 through 63
%
% 8 12 8 1 9 3 11
% *************************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -