✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
Link 16是一种军事数据链网络,用于在战场上实现实时通信和共享战术数据。对于Link 16通信的战术数据链分析,主要包括以下方面:
- 数据链性能分析:评估Link 16数据链的性能参数,如传输速率、带宽、误码率、时延等。通过对这些参数的分析,可以确定Link 16数据链在特定环境下的表现和限制。
- 链路质量评估:对于Link 16通信链路的质量进行评估,包括信号强度、接收功率、信噪比等。这有助于判断通信链路的可靠性和稳定性,并为进一步分析提供基础。
- 障碍物影响分析:分析障碍物(如地形、建筑物等)对Link 16信号传播的影响。这涉及信号衰落、多径效应、阻塞和干扰等问题的识别和分析。
- 通信容量分析:评估Link 16数据链的容量,即支持数据传输的能力。这包括对链路资源的利用率、数据传输需求的估计以及数据链网络负荷的分析。
- 网络拓扑和节点分析:分析Link 16数据链的网络拓扑结构,包括节点配置和连接关系等。这有助于确定通信节点之间。
- 网络安全分析:对Link 16通信的网络安全性进行评估和分析,识别潜在威胁和安全漏洞,并提出相应的安全措施和防御策略。
通过对Link 16通信的战术数据链进行综合分析,可以为军事作战和指挥决策重要的支持。这些分析结果可用于优化通信资源分配、改进通信策略、增强战场态势感知能力以及改善指挥与控制效能。
⛄ 部分代码
%% 简易跳频系统误比特率统计分析% 调制-->跳频-->信道-->解跳-->解调-->误码分析ticclc;clear;close all;%% 参数设置FH = 1; % 0: 不跳频传输 1:跳频传输XINGZUO = 4;%BPSK:0 QPSK:1 '16QAM':2 '64QAM':3 'MSK':4CRC_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/sTb = 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';endM = 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)';enddataIn_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 0000end%% 交织 (对原数据分块进行处理:只是改变数据位置 不改变数据数量)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=4data_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%% 误码输出figuresemilogy(snr,ber,'-*')save MSK+RS+CCSK+FH berhold ongrid onBER_qpsk = duibizu_qpsk(dataIn,snr,PACKET_NUM);save MSK+RS+CCSK BER_qpsksemilogy(snr,BER_qpsk,'-o')hold onBER_16qam = duibizu_16qam(dataIn,snr,PACKET_NUM);save MSK+CCSK BER_16qamsemilogy(snr,BER_16qam,'-x')hold onBER_64qam = duibizu_64qam(dataIn,snr,PACKET_NUM);save MSK BER_64qamsemilogy(snr,BER_64qam,'-s')hold ongrid onxlabel('Eb/No (dB)')%如果不进行转换就是SNRylabel('误比特率')%如果不进行转换就是误码率legend('MSK+RS+CCSK+FH','MSK+RS+CCSK','MSK+CCSK','MSK')toc
⛄ 运行结果
⛄ 参考文献
[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.