⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kuanjiange_seqencezu.m

📁 kuanjiange_seq.m 基于对偶频带法和m序列
💻 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上跳
                flag = 1;                                         % 仍置频带标志为1
                                   
            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 + -