基于matlab实现Link16通信战术数据链分析

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

⛄ 内容介绍

Link 16是一种军事数据链网络,用于在战场上实现实时通信和共享战术数据。对于Link 16通信的战术数据链分析,主要包括以下方面:

  1. 数据链性能分析:评估Link 16数据链的性能参数,如传输速率、带宽、误码率、时延等。通过对这些参数的分析,可以确定Link 16数据链在特定环境下的表现和限制。
  2. 链路质量评估:对于Link 16通信链路的质量进行评估,包括信号强度、接收功率、信噪比等。这有助于判断通信链路的可靠性和稳定性,并为进一步分析提供基础。
  3. 障碍物影响分析:分析障碍物(如地形、建筑物等)对Link 16信号传播的影响。这涉及信号衰落、多径效应、阻塞和干扰等问题的识别和分析。
  4. 通信容量分析:评估Link 16数据链的容量,即支持数据传输的能力。这包括对链路资源的利用率、数据传输需求的估计以及数据链网络负荷的分析。
  5. 网络拓扑和节点分析:分析Link 16数据链的网络拓扑结构,包括节点配置和连接关系等。这有助于确定通信节点之间。
  6. 网络安全分析:对Link 16通信的网络安全性进行评估和分析,识别潜在威胁和安全漏洞,并提出相应的安全措施和防御策略。

通过对Link 16通信的战术数据链进行综合分析,可以为军事作战和指挥决策重要的支持。这些分析结果可用于优化通信资源分配、改进通信策略、增强战场态势感知能力以及改善指挥与控制效能。

⛄ 部分代码

%% 简易跳频系统误比特率统计分析
% 调制-->跳频-->信道-->解跳-->解调-->误码分析
tic
clc;clear;close all;

%% 参数设置
FH = 1;                         % 0: 不跳频传输 1:跳频传输
XINGZUO = 4;%BPSK:0   QPSK:1  '16QAM':2   '64QAM':3    'MSK':4
CRC_CODE = 0;%1: CRC编码  0:不CRC编码
DatainCode = 1;%'NO': 0 不编码 || 'rs':1 RS(31,15)编码  || 'juanji':2 (2,1,7)卷积编码 
interwine = 1;
CCSK = 1;
% ******************** 系统参数设置*****************%
Rb = 5e4;                       % 速率:50Kb/s
Tb = 1 / Rb;                    % bit间隔

% ********************跳频参数设置 *****************%
hopping = 1000;                 % 跳频速率
bitsPerHop = Rb / hopping;      % 每跳bit数目(必须为整数)
samp = 20;                      % 过采样倍数
fs = samp*Rb;                   % 采样率
BW = 5e6;                       % 跳频带宽
freqNum = floor(BW / (Rb*4));   % 跳频频点数目
freqInterval = BW / freqNum;    % 频点间隔
freqSeq = ([0:freqNum-1] - floor(freqNum/2)) * freqInterval;   % 跳频频点序列
carrier = 3e6;                  % 跳频中心频率
carrierSeq = carrier + freqSeq; % 发送时跳频频点序列

ts = 1/fs;
fd = 300;                                          %多普勒频偏
pathPower = [-1.0 -1.0 -1.0 0 0 0 -3.0 -5.0 -7.0];
pathDelays = [0 50 120 200 230 500 1600 2300 5000]*1e-8;
rchan = comm.RayleighChannel('SampleRate',fs, ...
    'PathDelays',pathDelays,'AveragePathGains',pathPower, ...
    'MaximumDopplerShift',fd,'FadingTechnique','Sum of sinusoids');

switch FH
    case 0
        FIG_FH = '非跳频传输';
    case 1
        FIG_FH = '跳频传输';
end
% ********************调制参数设置 *****************%
switch XINGZUO
    case 0  %'BPSK'
        xz_n = 1;
        FIG_XINGZUO = 'BPSK';
    case 1  %'QPSK'
        xz_n = 2;
        FIG_XINGZUO = 'QPSK';
    case 2  %'16QAM'
        xz_n = 4;
        FIG_XINGZUO = '16QAM';
    case 3  %'64QAM'
        xz_n = 6;
        FIG_XINGZUO = '64QAM';
    case 4  %'MSK'
        xz_n = 4;
        FIG_XINGZUO = 'MSK';
end
M = 2^xz_n;

% ***************CRC(237,225) X^12+1 *****************%
switch CRC_CODE
    case 0  %不采取检错编码
        crc_n = 1;
    case 1  %(237,225)检错编码
        crc_n = 225;
end
% ***************RS(31,15)编码参数*****************%
switch DatainCode
    case 0  %0:不编码
%         rs_m = 1;rs_k = 1;
        rs_m = 5; rs_n = 2^rs_m - 1;
        rs_t = 8; rs_k = rs_n - 2*rs_t ;%t: 能纠正的符号错误个数 k: 信息段长度
        FIG_code = '无纠错编码';
    case 1  %1: RS(31,15)编码
        rs_m = 5; rs_n = 2^rs_m - 1;
        rs_t = 8; rs_k = rs_n - 2*rs_t ;%t: 能纠正的符号错误个数 k: 信息段长度
        FIG_code = 'RS(31,15)编码';
    case 2  %2: (2,1,7)卷积编码 
%         rs_m = 1;rs_k = 1;
        rs_m = 5; rs_n = 2^rs_m - 1;
        rs_t = 8; rs_k = rs_n - 2*rs_t ;%t: 能纠正的符号错误个数 k: 信息段长度
        FIG_code = '(2,1,7)卷积编码';
end
% ************************产生信源信号*******************%
MSG_len = rs_m * rs_k * xz_n*crc_n; % 输入大小最好为rs_m * rs_k*xz_n的整数倍(后面会每rs_m位转换为十进制,然后gf的输入的列数必须为rs_k)
% ***************** 传输信息参数设置*****************%
SYNC_BIT_NUM = 0;                                            % 同步bit数目
frameNum = 1;                                                % 传输帧数目
PACKET_NUM = 3;                                                % 每一帧的包数目
BIT_PER_PACKET = MSG_len*bitsPerHop;                                       %每一包的比特数
MSG_BIT_NUM = BIT_PER_PACKET*PACKET_NUM;                      % 有效消息bit数目
TX_BIT_NUM = SYNC_BIT_NUM + MSG_BIT_NUM;            % 需要发送的bit数目

%% 构造发送序列
SYNC = randi([0 ,1] , 1 , SYNC_BIT_NUM);                        % 同步二进制序列(用一串随机序列代替)
MSG = randi([0,1] ,1 ,TX_BIT_NUM - SYNC_BIT_NUM);       % 消息字符号
dataIn = [SYNC , MSG];                                          % 构造整个发送bit序列                                      % 

%% CRC检错编码
switch CRC_CODE
    case 0
        dataIn_crc = dataIn';
        FIG_CRC_CODE = 'no CRC';
    case 1  %(237,225)检错编码
        poly = 'z12+1';     %多项式
        ChecksumsPerFrame = length(dataIn)/crc_n;%将传入帧细分为ChecksumsPerFrame个等长的子帧。因为每crc_n位数据编码一次
        crcgenerator = comm.CRCGenerator(poly,'ChecksumsPerFrame',ChecksumsPerFrame);%CRC编码生成器
        crcdetector = comm.CRCDetector(poly,'ChecksumsPerFrame',ChecksumsPerFrame);%CRC解码生成器

        dataIn_crc = crcgenerator(dataIn'); %CRC编码 输入应是列向量
        FIG_CRC_CODE = 'CRC(237,225)';
end
dataIn_crc = dataIn_crc';%转换回行向量

%% 信源纠错编码
switch DatainCode
    case 0
        encoded_msg = dataIn_crc;                      %1*30 0000
    case 1  %'rs'  每kk位编码为nn位
        %下面是(31,15)RS编码(每15个用31个来表示)
        nn = rs_n;                        %编码后码字长度(信息段+监督段)
        kk = rs_k;                        %信息段长度
        encoded_msg = LSY_RSCode(dataIn_crc,nn,kk);%1 * 62 0000
    case 2  %'juanji' 每k位编码为n位
        %(n,k,m) n为输出长度 k为输入长度 m为编码约束度 n*(m+1)为约束长度 k/n为码率
        %下面是(2,1,7)卷积码
        L = 7;                   %约束长度
        tbdepth = 42;       % Traceback depth for Viterbi decoder Viterbi译码器回溯深度 一般是约束长度的5-9倍
        trel = poly2trellis(L,[171,133]);         %卷积码生成多项式
        encoded_msg = convenc(dataIn_crc,trel);       %卷积编码 1*60 0000
end

%% 交织 (对原数据分块进行处理:只是改变数据位置 不改变数据数量)
interwine_msg = zeros(1,length(encoded_msg));
switch interwine
    case 0
        interwine_msg = encoded_msg;
        FIG_interwine = 'NO interwine';
    case 1
        rows = 10;cols = 100;%设定交织的深度与宽度 rows*cols应该等于输入矩阵的行数(因为交织按列取来做填充)
        division = length(encoded_msg)/(rows*cols);%交织次数
        for i =1:division
            temp_data_1 = encoded_msg(1,(((i-1)*(rows*cols))+1):(i*(rows*cols)));%通过按列填充矩阵,并按行输出符号来恢复符号排序 https://www.jianshu.com/p/ac6c18fc3545
            temp_data_2 = matintrlv(temp_data_1,rows,cols);
            interwine_msg(1:i*rows*cols) = horzcat(interwine_msg(1:(i-1)*rows*cols),temp_data_2);
        end
        FIG_interwine = 'interwine';
end
%% CCSK软扩频 CCSK序列为32位

switch CCSK
    case 0
        ccsk_msg = interwine_msg;
        FIG_CCSK = 'NO CCSK';
    case 1
        % ccskcode=[0 1 1 1 1 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 1 1 0 0]';%Link16的CCSK序列 自相关性并不是最优
        ccskcode=[1 0 1 1 1 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0]';%优化后的CCSK序列 相关性更好  Link16 关键技术研究及系统建模
        %n_ccsk = 32;%CCSK序列长度
        ccsk_msg = LSY_CCSK32(interwine_msg,ccskcode);
        FIG_CCSK = 'NO CCSK';
end
%% 星座映射
data_xz= reshape(ccsk_msg,log2(M),[])';       %以每组log2(M)比特进行分组,M=4
data_xzde= bi2de(data_xz,'left-msb');            %二进制转化为十进制


data = rcvBB1dim(1:end-EXCEED_BIT);    %去掉末尾的0 

        [ii jj]
    end 
    % 计算误bit率
    ber(ii) = sumErrBit / (frameNum*TX_BIT_NUM);
    berPacket(ii) = sumErrPacket/(frameNum*PACKET_NUM);
end

%% 误码输出
figure
semilogy(snr,ber,'-*')
save MSK+RS+CCSK+FH ber
hold on
grid on

BER_qpsk = duibizu_qpsk(dataIn,snr,PACKET_NUM);
save MSK+RS+CCSK BER_qpsk
semilogy(snr,BER_qpsk,'-o')
hold on

BER_16qam = duibizu_16qam(dataIn,snr,PACKET_NUM);
save MSK+CCSK BER_16qam
semilogy(snr,BER_16qam,'-x')
hold on

BER_64qam = duibizu_64qam(dataIn,snr,PACKET_NUM);
save MSK BER_64qam
semilogy(snr,BER_64qam,'-s')
hold on

grid on
xlabel('Eb/No (dB)')%如果不进行转换就是SNR
ylabel('误比特率')%如果不进行转换就是误码率

legend('MSK+RS+CCSK+FH','MSK+RS+CCSK','MSK+CCSK','MSK')

toc

⛄ 运行结果

基于matlab实现Link16通信战术数据链分析_无人机

基于matlab实现Link16通信战术数据链分析_路径规划_02

基于matlab实现Link16通信战术数据链分析_路径规划_03

基于matlab实现Link16通信战术数据链分析_路径规划_04

⛄ 参考文献

[1] 宋南莹温东刘翠海.Link-16战术数据链系统纠错性能分析[J].数字技术与应用, 2018, 036(010):210-211,213.

[2] 朱天杰,刘强,潘杨杨,等.基于Link16的战术数据链网络规划平台[J].火力与指挥控制, 2015, 40(11):6.DOI:10.3969/j.issn.1002-0640.2015.11.043.

[3] 殷璐,严建钢,樊严.Link-16战术数据链抗干扰性能评估与仿真[J].航天电子对抗, 2007.DOI:JournalArticle/5aeadaeec095d70944f61c1f.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料

🍅 仿真咨询

1.卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3.旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划
4.无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5.传感器部署优化、通信协议优化、路由优化、目标定位
6.信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号
7.生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化
8.微电网优化、无功优化、配电网重构、储能配置
9.元胞自动机交通流 人群疏散 病毒扩散 晶体生长
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值