?? 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 + -