?? kuanjiange_seqencezu.m
字號:
% kuanjiange_seqencezu.m
% 構造寬間隔跳頻序列族
% 生成寬間隔跳頻序列
% sequencei 和 sequenceii 是兩個序列,所構造的寬間隔序列在兩個序列間跳取而得,原理參看
% 《跳頻通信》一書 P75-P77
% 仿真時:在進行判定時,要對大于跳頻間隔 d 進行判定,d = 2.
% 程序最后附上仿真出的寬間隔跳頻序列族結果,為8個序列
% 仿真結果與《跳頻通信》一書完全一致,得到驗證。
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,:); % 取中的一個m序列
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 % 對應序列族中的8個
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 % 相對j判斷
end % 相對j循環
end % 相對i循環
%*************************** 結束序列計算 ********************************
sequence1 = zeros(nd,len);
for i = 1:nd
for j = 1:len
sequence1(i,j) = W(i,j);
end
% i = 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
end
% *************************************************************************
wide_interval = zeros(nd,len);
for kk = 1:nd
wide_interval(kk,1) = sequence1(kk,1);
% 寬間隔先取F1上的第一個值
end
flag = 0;
% 所在頻帶標志,為0在F1上,為1在其對偶頻帶上
% *************************** 開始計算寬間隔序列 ***************************
for ii = 1:nd
for iii = 1:(len-1)
if flag == 0 % 在F1上
if abs(sequence1(ii,iii+1)-wide_interval(ii,iii)) > d % 先判斷F1
wide_interval(ii,iii+1) = sequence1(ii,iii+1); % 在F1上滿足d時,下一跳仍在F1上跳
flag = 0; % 頻帶標志仍置0
else % 跳到對偶頻帶F2上
wide_interval(ii,iii+1) = sequence2(ii,iii+1); % 在F1上不滿足時跳轉到F2上,看是否滿足跳頻間隔d
% 在F2上滿足d時,下一次仍在F2上跳
flag = 1; % 頻帶標志置為1
end % 相對abs判斷
end % 相對flag判斷
if flag == 1 % 在對偶頻帶F2上
if abs(sequence2(ii,iii+1)-wide_interval(ii,iii)) > d % 先判斷F1
wide_interval(ii,iii+1) = sequence2(ii,iii+1); % 在F2上滿足d時,下一跳仍在F2上跳
else
wide_interval(ii,iii+1) = sequence1(ii,iii+1); % 在F2上不滿足時跳轉到F1上,看是否滿足跳頻間隔d
% 在F2上滿足d時,下一次仍在F2上跳
flag = 0; % 置頻帶標志為0
end % 相對abs判斷
end % 相對flag判斷
end % 相對iii循環
end % 相對ii循環
% disp(wide_interval) % 顯示出此跳頻序列族
%**************************** 結束序列計算 *********************************
S0 = wide_interval(1,:);
S1 = wide_interval(2,:);
%************************ 計算周期漢明相關值 *****************************
%************************ 計算S0的周期自相關值 *****************************
auto = zeros(1,len);
for i = 1:len
for j = 1:len
k = rem(i+j-1,len);
if k == 0
k = len;
end
if S0(j) == S0(k)
auto(i) = auto(i)+1;
end
end
end
% 定理2.1 《跳頻通信》P34
L = len;
b = mod(L,q);
auto21 = zeros(1,len);
fenzi = (L-b)*(L+b-q);
fenmu = q*(L-1);
min_aut21 = fenzi/fenmu;
for i = 1:len
auto21(i) = min_aut21;
end
%******************** 計算S0與S1的之間的周期互相關值 ************************
corr = zeros(1,len);
for i = 1:len
for j = 1:len
k = rem(i+j-1,len);
if k == 0
k = len;
end
if S0(j) == S1(k)
corr(i) = corr(i)+1;
end
end
end
% 定理2.2 《跳頻通信》P35
corr22 = zeros(1,len);
min_corr22 = 4;
for i = 1:len
corr22(i) = min_corr22;
end
%************************ 周期漢明相關值計算結束 ****************************
%****************************** 繪圖 ************************************
figure(1)
plot(auto,'b','LineWidth',1.2),hold on,grid on
plot(auto21,'r--','LineWidth',1)
xlabel('相對時延+1');ylabel('自相關值');
axis([1,len,0,len])
set(gca,'Xtick',[10,20,30,40,50,60],'Ytick',[3,7,20,40,60,max(auto)])
figure(2)
plot(corr,'b','LineWidth',1.2),hold on
xlabel('相對時延+1');ylabel('互相關值');
plot(corr22,'r--','LineWidth',1)
axis([1,len+1,0,10])
set(gca,'Xtick',[1,10,20,30,40,50,60],'Ytick',[0,1,2,3,4,5,6,7,8,9,10])
% ******************************* 結束 ************************************
% ***************************** end of file *******************************
%
% Columns 1 through 14
%
% 7 15 6 15 12 15 8 15 9 14 10 13 5 2
% 0 14 7 14 5 14 9 14 8 15 11 4 12 3
% 0 13 4 13 6 13 10 13 3 12 8 15 7 0
% 0 12 5 12 15 12 3 12 2 5 1 6 14 9
% 0 11 2 11 8 11 4 11 5 2 6 1 9 14
% 0 10 3 10 1 10 13 10 4 11 15 8 0 7
% 0 9 0 9 2 9 14 9 15 8 12 3 11 4
% 0 8 1 8 11 8 15 8 14 9 13 10 2 5
%
% Columns 15 through 28
%
% 11 5 15 10 15 5 14 11 4 14 9 12 2 9
% 10 4 14 11 14 4 7 2 5 15 8 13 3 0
% 9 15 5 0 5 15 12 9 14 4 11 14 8 11
% 0 6 12 9 12 6 13 8 15 5 2 7 1 10
% 7 1 11 14 11 1 10 15 8 2 5 0 6 13
% 14 8 2 7 2 8 11 14 9 3 12 9 15 12
% 13 3 9 12 9 3 0 5 2 8 15 10 4 7
% 12 2 8 13 8 2 9 12 3 9 14 11 5 14
%
% Columns 29 through 42
%
% 13 3 10 14 4 13 8 11 1 7 3 6 14 5
% 4 10 3 7 13 4 1 10 0 6 2 7 15 12
% 15 9 0 4 14 7 2 9 3 13 9 12 4 7
% 14 8 1 5 15 6 3 0 10 4 0 5 13 6
% 9 15 6 2 8 1 4 7 13 3 7 2 10 1
% 8 14 7 3 9 0 5 14 4 10 14 11 3 0
% 3 13 4 0 10 3 6 13 7 1 5 0 8 11
% 10 4 13 9 3 10 15 12 6 0 4 1 9 2
%
% Columns 43 through 56
%
% 12 3 0 6 0 5 1 10 2 12 4 1 8 2
% 5 2 9 15 9 12 8 11 3 13 5 0 9 3
% 14 9 2 12 2 7 3 0 8 14 6 3 10 0
% 15 8 11 5 11 14 10 1 9 15 7 2 11 1
% 8 15 12 2 12 9 13 6 14 8 0 5 12 6
% 9 14 5 11 5 0 4 7 15 9 1 4 13 7
% 2 5 14 8 14 11 15 12 4 10 2 7 14 4
% 11 4 7 1 7 2 6 13 5 11 3 6 15 5
%
% Columns 57 through 63
%
% 8 12 8 1 9 3 11
% 9 13 9 0 8 2 10
% 10 14 10 3 11 1 9
% 11 15 11 2 10 0 8
% 12 8 12 5 13 7 15
% 13 9 13 4 12 6 14
% 14 10 14 7 15 5 13
% 15 11 15 6 14 4 12
% auto =
%
% Columns 1 through 14
%
% 63 0 7 3 4 4 5 3 1 4 2 7 1 5
%
% Columns 15 through 28
%
% 3 5 2 5 1 2 5 3 5 2 3 1 5 2
%
% Columns 29 through 42
%
% 3 2 2 5 5 2 2 3 2 5 1 3 2 5
%
% Columns 43 through 56
%
% 3 5 2 1 5 2 5 3 5 1 7 2 4 1
%
% Columns 57 through 63
%
% 3 5 4 4 3 7 0
% corr =
%
% Columns 1 through 14
%
% 0 3 5 2 4 4 4 5 3 3 1 4 4 3
%
% Columns 15 through 28
%
% 3 3 2 4 7 2 4 2 5 2 5 2 5 3
%
% Columns 29 through 42
%
% 5 5 5 3 3 6 2 5 1 5 6 5 3 2
%
% Columns 43 through 56
%
% 4 3 6 4 8 5 5 3 7 3 5 5 2 7
%
% Columns 57 through 63
%
% 4 5 3 7 4 7 3
% *************************************************************************
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -