【误码率仿真】基于QPSK+16QAM调制仿真(含误码率含Matlab代码

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

个人主页:Matlab科研工作室

个人信条:格物致知。

更多Matlab仿真内容点击

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

  1. 调制方式:QPSK和16QAM是两种常见的调制方式,您需要确定您要使用的调制方式。

  2. 信道模型:通信信道的选择对误码率有很大影响,常见的信道模型有AWGN信道和Rayleigh衰落信道等。

  3. 编码方案:误码率仿真通常需要使用纠错编码方案来提高系统的可靠性,您可以选择使用卷积码、LDPC码等。

一般的误码率仿真流程如下:

  1. 生成调制信号:根据所选的调制方式,生成需要传输的数据比特序列,并进行对应的调制操作。

  2. 加入噪声:根据选择的信道模型,为调制信号添加合适的噪声,通常使用高斯白噪声(AWGN)。

  3. 解调与译码:将接收到的信号进行解调操作,并对解调后的数据进行译码操作,以还原原始数据比特序列。

  4. 计算误码率:将解码后的数据比特序列与发送的原始数据比特序列进行比对,计算误码率。

  5. 重复以上步骤多次:为了提高仿真的准确性,通常需要多次重复以上步骤,并取平均值作为最终的误码率结果。

⛄ 部分代码

% BER-(Eb/N0)性能曲线:% 参数处理EbNo_BER_DB = 0:0.1:60;gamma_BER_DB = EbNo_BER_DB+10*log10(2);EbNo_BER = 10.^(EbNo_BER_DB/10);gamma_BER = 10.^(gamma_BER_DB/10);% QPSK理论误比特率:PB_QPSK = IA(1,gamma_BER); % QPSK理论误比特率------BER-(Eb/N0)曲线semilogy(EbNo_BER_DB,PB_QPSK);axis([0,60,1e-6,1])grid onxlabel('Eb/No');ylabel('BER');hold on% QPSK实际误比特率:BitSeq_QPSK_BER=randi([0,1],[5120000,2]); % 生成比特序列SymbolSeq_QPSK_BER=bi2de(BitSeq_QPSK_BER,'left-msb'); %比特序列转化为符号序列ModulatedSeq_QPSK_BER=qammod(SymbolSeq_QPSK_BER,4); %调制后的信号序列H_QPSK_BER = 1/sqrt(2)*(randn(length(SymbolSeq_QPSK_BER),1) + 1i*randn(length(SymbolSeq_QPSK_BER),1)); % Rayleigh channelchanOut_QPSK_BER = H_QPSK_BER.*ModulatedSeq_QPSK_BER;BER_QPSK = zeros([1,11]);for ebno_qpsk=0:5:50    AWGNChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)','EbNo',ebno_qpsk,'BitsPerSymbol',2,'SignalPower',mean(abs(chanOut_QPSK_BER).^2));    outsignal_QPSK_BER=AWGNChannel(chanOut_QPSK_BER);    yHat_QPSK_BER = outsignal_QPSK_BER./H_QPSK_BER;    DemodSeq_QPSK_BER = qamdemod(yHat_QPSK_BER,4);    Rec_QPSK_BER=de2bi(DemodSeq_QPSK_BER,'left-msb');    [~,BER_QPSK(ebno_qpsk/5+1)]=biterr(Rec_QPSK_BER,BitSeq_QPSK_BER);endscatter(0:5:50,BER_QPSK);hold on% 16QAM理论误比特率:PB_16QAM = Theory_er(EbNo_BER);% 16QAM理论误比特率------BER-(Eb/N0)曲线semilogy(EbNo_BER_DB,PB_16QAM);hold on% 16QAM实际误比特率:BitSeq_16QAM_BER=randi([0,1],[5120000,4]); % 生成比特序列SymbolSeq_16QAM_BER=bi2de(BitSeq_16QAM_BER,'left-msb'); %比特序列转化为符号序列ModulatedSeq_16QAM_BER=qammod(SymbolSeq_16QAM_BER,16); %调制后的信号序列H_16QAM_BER = 1/sqrt(2)*(randn(length(SymbolSeq_16QAM_BER),1) + 1i*randn(length(SymbolSeq_16QAM_BER),1)); % Rayleigh channelchanOut_16QAM_BER = H_16QAM_BER.*ModulatedSeq_16QAM_BER;BER_16QAM = zeros([1,12]);for ebno_16qam = 0:5:55    AWGNChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Eb/No)','EbNo',ebno_16qam,'BitsPerSymbol',4,'SignalPower',mean(abs(chanOut_16QAM_BER).^2));    outsignal_16QAM_BER=AWGNChannel(chanOut_16QAM_BER);    yHat_16QAM_BER = outsignal_16QAM_BER./H_16QAM_BER;    DemodSeq_16QAM_BER = qamdemod(yHat_16QAM_BER,16);    Rec_16QAM_BER=de2bi(DemodSeq_16QAM_BER,'left-msb');    [~,BER_16QAM(ebno_16qam/5+1)]=biterr(Rec_16QAM_BER,BitSeq_16QAM_BER);endscatter(0:5:55,BER_16QAM);legend('QPSK theoretical','QPSK simulated','16QAM theoretical','16QAM simulated');title('Rayleigh')figure%%% SER-(Es/N0) 性能曲线:% 参数处理gamma_SER_DB = 0:0.1:70;gamma_SER = 10.^(gamma_SER_DB/10);% QPSK理论误符号率:PS_QPSK = 2*IA(1,gamma_SER)-I_A(1,gamma_SER); % QPSK理论误符号率------SER-(Es/N0)曲线semilogy(gamma_SER_DB,PS_QPSK);axis([0,70,1e-6,1])grid onxlabel('Es/No');ylabel('SER');hold on% QPSK实际误符号率:BitSeq_QPSK_SER=randi([0,1],[5120000,2]); % 生成比特序列SymbolSeq_QPSK_SER=bi2de(BitSeq_QPSK_SER,'left-msb'); %比特序列转化为符号序列ModulatedSeq_QPSK_SER=qammod(SymbolSeq_QPSK_SER,4); %调制后的信号序列H_QPSK_SER = 1/sqrt(2)*(randn(length(SymbolSeq_QPSK_SER),1) + 1i*randn(length(SymbolSeq_QPSK_SER),1)); % Rayleigh channelchanOut_QPSK_SER = H_QPSK_SER.*ModulatedSeq_QPSK_SER;SER_QPSK = zeros([1,12]);for esno_qpsk=0:5:55    AWGNChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Es/No)','EsNo',esno_qpsk,'SignalPower',mean(abs(chanOut_QPSK_SER).^2));    outsignal_QPSK_SER=AWGNChannel(chanOut_QPSK_SER);    yHat_QPSK_SER = outsignal_QPSK_SER./H_QPSK_SER;    DemodSeq_QPSK_SER = qamdemod(yHat_QPSK_SER,4);    [~,SER_QPSK(esno_qpsk/5+1)]=symerr(DemodSeq_QPSK_SER,SymbolSeq_QPSK_SER);endscatter(0:5:55,SER_QPSK);hold on% 16QAM理论误符号率:PS_16QAM = 3*IA(sqrt(1/5),gamma_SER)-9/4*I_A(sqrt(1/5),gamma_SER);semilogy(gamma_SER_DB,PS_16QAM);hold on% 16QAM实际误符号率:BitSeq_16QAM_SER=randi([0,1],[5120000,4]); % 生成比特序列SymbolSeq_16QAM_SER=bi2de(BitSeq_16QAM_SER,'left-msb'); %比特序列转化为符号序列ModulatedSeq_16QAM_SER=qammod(SymbolSeq_16QAM_SER,16); %调制后的信号序列H_16QAM_SER = 1/sqrt(2)*(randn(length(SymbolSeq_16QAM_SER),1) + 1i*randn(length(SymbolSeq_16QAM_SER),1)); % Rayleigh channelchanOut_16QAM_SER = H_16QAM_SER.*ModulatedSeq_16QAM_SER;SER_16QAM = zeros([1,14]);for esno_16qam=0:5:65    AWGNChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (Es/No)','EsNo',esno_16qam,'SignalPower',mean(abs(chanOut_16QAM_SER).^2));    outsignal_16QAM_SER=AWGNChannel(chanOut_16QAM_SER);    yHat_16QAM_SER = outsignal_16QAM_SER./H_16QAM_SER;    DemodSeq_16QAM_SER = qamdemod(yHat_16QAM_SER,16);    [~,SER_16QAM(esno_16qam/5+1)]=symerr(DemodSeq_16QAM_SER,SymbolSeq_16QAM_SER);endscatter(0:5:65,SER_16QAM);hold onlegend('QPSK theoretical','QPSK simulated','16QAM theoretical','16QAM simulated');title('Rayleigh')function [res] = Theory_er(EBNO)% 计算16QAM理论误码率函数% 输入:EBNO% 输出:16QAM理论误码率% 调用辅助函数 pbk(k,EBNO)% pbk进行了改动,其中调用了IA函数    res=0;    for k=1:1:2        res=res+pbk(k,EBNO);    end    res=res/2;endfunction [res] = pbk(K,EBNO)% 辅助函数    res = 0;    for i=0:1:((1-2^(-K))*4-1)        a=(-1)^floor((2^(K-1)*i/16));        b=2^(K-1)-floor(2^(K-1)*i/4+0.5);        c=IA((2*i+1)*sqrt(1/5),4*EBNO);        res = res+a*b*c;    end    res = res/2;endfunction [res] = IA(a,gamma)% 函数说明:进行Q函数和I(a)函数的转换% 输入参数:a:Q函数中sqrt(gamma)的系数;gamma:Es/No% 输出:I(a)    res = 0.5-0.5*sqrt(a*a*gamma./(2+a*a*gamma));endfunction [res] = I_A(a,gamma)% 函数说明:进行Q^2函数和I'(a)函数的转换% 输入参数:a:Q函数中sqrt(gamma)的系数;gamma:Es/No% 输出:I'(a)    a = (2+a*a*gamma)./(a*a*gamma);    temp = sqrt(a);    res = 0.25*(1-4/pi*atan(temp)./temp);end

⛄ 运行结果

【误码率仿真】基于QPSK+16QAM调制仿真(含误码率含Matlab代码_第1张图片

【误码率仿真】基于QPSK+16QAM调制仿真(含误码率含Matlab代码_第2张图片

⛄ 参考文献

[1] 马启成.QPSK调制下基于均值判决的误码率仿真[J].中国新通信, 2020, 22(19):2.

[2] 赵忠华,杨晓梅.GMSK调制解调的MATLAB仿真与误码率分析[J].新疆师范大学学报:自然科学版, 2015, 34(2):6.DOI:10.3969/j.issn.1008-9659.2015.02.013.

[3] 张起晶,孙桂芝.基于QPSK调制的扩频系统MATLAB仿真[J].现代科学仪器, 2014(1):3.DOI:CNKI:SUN:XDYQ.0.2014-01-017.

[4] 谭清元,潘学文.QPSK和16QAM调制下MIMO-OFDM系统Matlab仿真实现[J].电脑知识与技术:学术版, 2019, 15(12):2.

⛳️ 代码获取关注我

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

仿真咨询

1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化
2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
2.图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
3 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化
4 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配
5 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化
6 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化
7 电力系统方面
微电网优化、无功优化、配电网重构、储能配置
8 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长
9 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

你可能感兴趣的:(信号处理,matlab,开发语言)