当前位置: 首页 > news >正文

第【73】期--基于FHSS跳频扩频系统的不同调制方式性能对比--MATLAB完整代码

文章目录

    • 摘要
    • 1. 引言
    • 2. 系统理论基础
      • 2.1 跳频扩频通信原理
      • 2.2 卷积编码与维特比译码
      • 2.3 数字调制技术
        • 2.3.1 二进制相移键控(BPSK)
        • 2.3.2 四相相移键控(QPSK)与偏移QPSK(OQPSK)
        • 2.3.3 频移键控(FSK)
        • 2.3.4 正交幅度调制(QAM)
      • 2.4 脉冲成型与采样
    • 3 仿真设计
      • 3.1 仿真流程图
      • 3.2 仿真结果
      • 3.3 完整代码
    • 4 总结

摘要

跳频扩频(FHSS)技术因其抗干扰和保密性在通信领域应用广泛。本文基于MATLAB构建FHSS系统仿真模型,采用码率2/3卷积编码、IP帧结构,在高斯白噪声信道下对比FSK、BPSK、QPSK、OQPSK、16QAM和64QAM六种调制方式的误码率性能。仿真结果表明,低阶调制具有更好抗噪声性能,高阶调制牺牲抗干扰能力换取更高频谱效率。

1. 引言

跳频扩频技术通过载波频率的伪随机跳变,有效抵抗窄带干扰和频率选择性衰落,具有良好的保密性和多址接入能力。调制技术直接决定系统的频谱效率、功率效率和抗干扰能力,不同调制方式在不同信道条件下表现各异。因此,在FHSS系统中研究调制方式选择具有重要意义。

本文通过MATLAB仿真,系统对比常用调制方式在FHSS系统中的BER和PER性能,分析调制阶数对系统性能的影响。

2. 系统理论基础

2.1 跳频扩频通信原理


2.2 卷积编码与维特比译码

2.3 数字调制技术

调制是将基带信号搬移到射频载波上的过程,不同调制方式在频谱效率、功率效率和抗噪声性能方面存在显著差异。

2.3.1 二进制相移键控(BPSK)

2.3.2 四相相移键控(QPSK)与偏移QPSK(OQPSK)

2.3.3 频移键控(FSK)

2.3.4 正交幅度调制(QAM)

2.4 脉冲成型与采样

3 仿真设计

3.1 仿真流程图

3.2 仿真结果

3.3 完整代码

%%FHSS系统-不同调制方式性能对比%固定参数:卷积码码率2/3,高斯白噪声信道,无干扰 clc;clear;close all;tic;%%公共参数 CodeType='卷积码';codeRate=2/3;constrain_len=8;%卷积码约束长度 puncpat=[1,1,1,0];%2/3码率删余模式%所有调制方式列表 ModulationList={'FSK','GMSK','BPSK','QPSK','OQPSK','16QAM','64QAM'};numMod=length(ModulationList);%固定信道、干扰 ChannelType='高斯白噪声信道';Jam_type='None';%无干扰%系统参数 Ts=0.01;N=2400;Rs=N/Ts;fc=Rs*30;freqSep=10*Rs;numPkts=100;%每信噪比点仿真包数(减小以加快速度) SINR_dB=-2:2:20;%帧结构固定为IP FrameType='IP';Frame=2;%IP帧%跳频参数 fh_seq=[fc-4*Rs,fc-2*Rs,fc,fc+2*Rs,fc+4*Rs];freqLen=length(fh_seq);%采样参数 up_sample_fs=100;fs=Rs*up_sample_fs;dt_fs=1/fs;%IP帧固定字段(用于组帧) ip_frame_version=[0100];ip_frame_IHL=[0101];ip_frame_tos=[01000000];ip_frame_len=[0000000000000101];ip_frame_id=[0100101011001101];ip_frame_flag=[001];ip_frame_offest=[0000000000000];ip_frame_TTL=[00100000];ip_frame_protocol=[00000001];ip_frame_checksum=[0000000000000000];ip_frame_src=[1100000010101000...0000000000100111];ip_frame_dst=[0111110001111111...1100111100001111];len_ip=length(ip_frame_version)+length(ip_frame_IHL)+length(ip_frame_tos)+length(ip_frame_len)+...length(ip_frame_id)+length(ip_frame_flag)+length(ip_frame_offest)+length(ip_frame_TTL)+...length(ip_frame_protocol)+length(ip_frame_checksum)+length(ip_frame_src)+length(ip_frame_dst);%存储结果 BER_all=zeros(numMod,length(SINR_dB));PER_all=zeros(numMod,length(SINR_dB));%%对不同调制方式循环formodIdx=1:numMod ModulationType=ModulationList{modIdx};modeTypeList={'FSK','GMSK','BPSK','QPSK','OQPSK','16QAM','64QAM'};Mode=find(ismember(modeTypeList,ModulationType)==1);%设置调制阶数和每符号比特数switchModecase1%FSK M=2;K=log2(M);SamplesPerSymbol=2;case2%GMSK M=2;K=log2(M);SamplesPerSymbol=2;case3%BPSK M=2;K=log2(M);SamplesPerSymbol=2;case4%QPSK M=4;K=log2(M);SamplesPerSymbol=2;case5%OQPSK M=4;K=1;%OQPSK特殊处理 SamplesPerSymbol=2;case6%16QAM M=16;K=log2(M);SamplesPerSymbol=2;case7%64QAM M=64;K=log2(M);SamplesPerSymbol=2;otherwiseerror('不支持的调制方式');end%每包比特数 numBits=N*K*codeRate;numBits_data=numBits-len_ip;%确保数据比特数为正ifnumBits_data<=0error('数据比特数为负,请检查参数设置!');end%初始化误码统计 erTot=zeros(1,length(SINR_dB));totPktEr=zeros(1,length(SINR_dB));forii=1:length(SINR_dB)fprintf('调制方式:%s,SINR=%d dB,仿真包数:%d\n',ModulationType,SINR_dB(ii),numPkts);SINR_de=10^(SINR_dB(ii)/10);nBitErr=zeros(1,numPkts);forpktX=1:numPkts%生成数据比特 bit_source_sequence=randi([01],numBits_data,1);%IP组帧 ip_frame_lenz1=dec2bin(numBits_data+5,16);ip_frame_lenz=double(boolean(ip_frame_lenz1-'0'));ip_frame_data=bit_source_sequence';%计算IP首部校验和 ip_sum=0;ip_frame1=[ip_frame_version ip_frame_IHL ip_frame_tos ip_frame_lenz ip_frame_id ip_frame_flag...ip_frame_offest ip_frame_TTL ip_frame_protocol ip_frame_checksum ip_frame_src ip_frame_dst];forcounti=1:(len_ip/16)ip_pian1=ip_frame1(1,1+16*(counti-1):16*counti);ip_zhong=num2str(ip_pian1);ip_zhuan1=bin2dec(ip_zhong);ip_sum=ip_sum+ip_zhuan1;end ip_sumz=dec2bin(ip_sum,20);ip_frame_checksumz1=double(boolean(ip_sumz-'0'));ip_frame_checksumz2=~ip_frame_checksumz1;ip_frame_chz1=ip_frame_checksumz2(1,5:end);ip_frame_chz2=ip_frame_checksumz2(1,1:4);ip_frame_ce1=bin2dec(num2str(ip_frame_chz1))+bin2dec(num2str(ip_frame_chz2));ip_frame_ce2=dec2bin(ip_frame_ce1,16);ip_frame_checksumz=double(boolean(ip_frame_ce2-'0'));bit_frame_sequence=[ip_frame_version ip_frame_IHL ip_frame_tos ip_frame_lenz...ip_frame_id ip_frame_flag ip_frame_offest ip_frame_TTL ip_frame_protocol...ip_frame_checksumz ip_frame_src ip_frame_dst ip_frame_data]';%卷积编码[bit_code_sequence,trel,tblen]=conven(bit_frame_sequence,puncpat,constrain_len);%调制[modSignal,hMod]=Modulation(bit_code_sequence,Mode,M,SamplesPerSymbol,fs,freqSep);s2=reshape(modSignal,1,length(modSignal));Signal_mean_power=mean(abs(s2).^2);%脉冲成型(矩形) up_sample_fs_temp=up_sample_fs;data_transmit_upsample=rectpulse(s2,up_sample_fs_temp);%生成对应长度的时间序列 len_signal=length(data_transmit_upsample);t_fs=(0:len_signal-1)/fs;%根据信号长度生成时间序列%跳频载波调制 fh_index=randi([1,freqLen],1,1);fc_current_Pkt=fh_seq(fh_index);data_transmit_RF=data_transmit_upsample.*exp(1i*2*pi*fc_current_Pkt*t_fs);%信道(AWGN) data_transmit=data_transmit_RF;Signal_mean_power_channel=mean(abs(data_transmit).^2);%干扰(无) Jam_signal=0;%噪声 NoisePower=Signal_mean_power_channel/SINR_de;noise_seq=sqrt(NoisePower/2)*(randn(1,length(data_transmit))+1i*randn(1,length(data_transmit)));y_channel_all=data_transmit+Jam_signal+noise_seq;%下变频(使用相同的时间序列) data_receiver=y_channel_all.*exp(-1i*2*pi*fc_current_Pkt*t_fs);%下采样 data_receiver_ds=downsample(data_receiver,up_sample_fs_temp,up_sample_fs_temp/2);data_receiver_ds=reshape(data_receiver_ds,length(data_receiver_ds),1);%解调[bit_Demodulated,hDemod]=Demodulation(data_receiver_ds,Mode,M,SamplesPerSymbol,fs,freqSep);%Viterbi译码 bit_decode=vitdec(bit_Demodulated,trel,tblen,'trunc','hard',puncpat);%误比特统计(去除帧尾16位校验和) minLen=min(length(bit_decode),length(bit_frame_sequence));ifminLen>16nBitErr(pktX)=sum(bit_decode(1:minLen-16)~=bit_frame_sequence(1:minLen-16));elsenBitErr(pktX)=0;end enderTot(ii)=sum(nBitErr);totPktEr(ii)=sum(nBitErr>0);endBER_all(modIdx,:)=erTot/(numBits*numPkts);PER_all(modIdx,:)=totPktEr/numPkts;end%%绘图-BER figure;semilogy(SINR_dB,BER_all(1,:),'r-o','LineWidth',2,'MarkerSize',8);hold on;semilogy(SINR_dB,BER_all(3,:),'b-^','LineWidth',2,'MarkerSize',8);semilogy(SINR_dB,BER_all(4,:),'m-d','LineWidth',2,'MarkerSize',8);semilogy(SINR_dB,BER_all(5,:),'y-p','LineWidth',2,'MarkerSize',8);semilogy(SINR_dB,BER_all(6,:),'k-h','LineWidth',2,'MarkerSize',8);semilogy(SINR_dB,BER_all(7,:),'g--*','LineWidth',2,'MarkerSize',8);grid on;box on;xlabel('SINR (dB)');ylabel('Bit Error Rate');legend('FSK','BPSK','QPSK','OQPSK','16QAM','64QAM','Location','southwest');title('不同调制方式下的BER性能对比(卷积码2/3,AWGN,无干扰)');

4 总结

本文通过MATLAB仿真,系统研究了跳频扩频(FHSS)通信系统中不同数字调制方式的性能。结果表明,在相同信道条件下,低阶调制(如BPSK、QPSK)凭借其简单的星座图结构展现出更强的抗噪声能力和更低的误码率,但频谱效率较低;而高阶调制(如16QAM、64QAM)虽然能显著提升频谱效率,但其抗干扰性能会相应下降。因此,在实际FHSS系统设计中,需要在抗干扰能力与频谱效率之间进行权衡,根据具体的应用场景和信道条件选择合适的调制方式。

往期仿真代码可见往期文章文末VX公众号(包含往期博客所有代码),所见即所得

http://www.jsqmd.com/news/1195445/

相关文章:

  • 47、Flink Table API与SQL配置项实战:从基础配置到高级调优
  • 2026 济南包包回收正规商家盘点,上门估价靠谱吗 - 讯息早知道
  • 深圳配眼镜别只看价格:验光水平和镜片匹配才是核心 - 配眼镜新资讯
  • LDDC歌词下载工具:3步完成精准歌词匹配与格式转换
  • 惠济全区上门收奢侈品,爱马仕香奈儿在线拍照估价 - 全城热点
  • 猫抓Cat-Catch终极指南:智能资源捕获与浏览器媒体嗅探完整攻略
  • 2026年一年级数学暑假测试卷(单元+期中期末)高清无水印可打印获取指南 - 时时资讯
  • 如何用OpenMTP解决macOS与Android文件传输难题:完整指南
  • DataCard 组件
  • 盐城老庙与主流品牌古法黄金实测评测:工艺与价值对比 - 招财兔数字员工
  • FPGA与W5500构建高性能工业以太网通信方案
  • 杭州上门收包全程实拍,交易透明有保障,2026 上门服务全覆盖 - 每日生活报
  • 后量子密码攻防:格基方案解密失败攻击与McEliece密钥缩减研究
  • 2026 安徽高考/单招落榜了,再战分类考,共达复读稳上统招大专! - 教育为先
  • 2023年必备DNS工具:ctrld多协议转发代理的终极指南
  • 基于SpringBoot的农产品电商平台微服务架构设计与实践
  • Apollo4BlueLite:如何以超低功耗重塑智能穿戴与IoT边缘节点
  • 2026 济宁、河北邢台、聊城、菏泽瓷砖 TOP5 实用榜单,贝索斯瓷砖综合实力突出 - 米諾
  • 5个步骤彻底解决华硕笔记本性能控制难题:G-Helper完全指南
  • 仅限前500名开发者获取:Cursor路由配置自动化审计工具v1.0(含VS Code插件+CI扫描报告),检测13类安全与可观测性风险
  • C++图形编程实战:用数学函数与精灵库绘制动态爱心动画
  • Python遗传算法实战:N皇后问题工程级实现与调优
  • 2026张家港俊德机械厂坡口三维激光切管机行业适配白皮书 - 招财兔数字员工
  • 终极解析:oncn-bwm如何解决在线/离线服务混合部署的带宽争夺难题
  • 2026海南公司注销流程费用明细!封关后注销避坑+疑难注销攻略|不用的公司一定要注销 众创宝海南企服优选:13098919146 - GrowthUME
  • 如何5分钟内用CameraKit iOS为你的应用添加专业相机功能
  • 2026年暑期张家界旅游避坑必看:5大核心痛点一次说清,选对旅行社其实很简单 - 博客万
  • Ternlight速览工具:从本地部署到生产环境的文本摘要实践指南
  • LittleD在工业物联网中的应用案例:传感器数据采集与查询实践
  • 学科壁垒正在崩塌?ChatGPT已识别出13类高潜力交叉领域——2024 NSF前沿资助项目预测模型首度公开