基于matlab的PDT DMR 物理层仿真

简介: 基于matlab的PDT DMR 物理层仿真

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

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

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

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

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

⛄ 内容介绍

基于matlab的PDT DMR 物理层仿真

⛄ 部分代码

%%%%% 频率偏差


% FreqOffset = 250; %% 此处设置频率偏差

% rx_cpfsk_signal = rx_cpfsk_signal .* exp(1i*2*pi*FreqOffset*SamplePeriod*[1:length(rx_cpfsk_signal)]);

% demod_phase = zeros(1,length(rx_cpfsk_signal));

% demod_phase(2:end) = angle(rx_cpfsk_signal(2:end).*conj(rx_cpfsk_signal(1:end-1)));

% conv_pulse = conv(pulse,pulse);

% demod_phase2 = conv(demod_phase,pulse)/norm(pulse)^2;

% detecx = demod_phase2(1:overSampleRate:end);

% detecx = detecx/(2*pi*0.27);

% dectBits = zeros(1,2*length(detecx));

% idx = find(detecx>=2); dectBits(2*idx)=1; %% 01

% idx = find(detecx<=-2); dectBits(2*idx)=1; dectBits(2*idx-1)=1; %% 11

% idx = find(detecx<0 & detecx>-2); dectBits(2*idx-1)=1; %% 10

% startIdx = Tspan*4 +1;

% errBits= sum(dectBits(startIdx:startIdx-1+length(txBits))~=txBits);

% BER_offset(n1) = BER_offset(n1)  + errBits;



%%%% 4CPFSK浮点的仿真

%%%% 时间 2021年4月13号    目的:看网上一篇文章 取80个符号的每个采样点作为最佳采样点

%%%% 期望比较一下在各种SNR条件下的性能


clc;

clear all;

close all;

randn('state',0);rand('state',0);

tic

bitLen=288;

overSampleRate=10;

Tspan=6;

pulse = rcosfir(0.2, Tspan, overSampleRate, 1,'sqrt');

cumpulse = cumsum(pulse);

pulse = pulse*0.5/cumpulse(end);


MaxIter=1e4;     % 测试此时

SNR = 5:1:10;    % 标记的SNR 取值

BER_opt = zeros(1,length(SNR));  %记录最后的误码率结果



for iter = 1:MaxIter

   

   Sync_MS_data= [0,1,1,1,0,  1,1,0,0,0,  1,0,1,0,0, 0,0,1,1,0,  1,1,1,0];

   txBits=Build_txbits(bitLen);  %建立测试数据

   

   cpfsk_signal = FSK_Modulation(txBits, overSampleRate,pulse);  %发射端调制

   noise = (randn(1,length(cpfsk_signal)) + 1i*randn(1,length(cpfsk_signal)))/sqrt(2);

   

   %%

   for n1=1:length(SNR)

       noiseSigma=sqrt(10^(-SNR(n1)/10));

       rx_cpfsk_signal = cpfsk_signal+noise*noiseSigma;   %添加噪声   频偏该怎么处理

       

       demod_phase = zeros(1,length(rx_cpfsk_signal));

       demod_phase(2:end) = angle(rx_cpfsk_signal(2:end).*conj(rx_cpfsk_signal(1:end-1)));

       conv_pulse = conv(pulse,pulse);

       demod_phase2 = conv(demod_phase,pulse)/norm(pulse)^2;

       demod_phase2 = demod_phase2/(2*pi*0.27);

       

       %% 将收到的数据变成10行*144的格式,其中 输入是匹配滤波后的值    YouXiaoData_in_Quant为数据*33之后的值

       [rx_buffers,rx_buffers_Quant] =Build_rx_buffer(demod_phase2);

       

       %% 找最佳采样点  

       % 计算每个采样点的对应的同步起始位置

       for sample_cnt=1:1:10

           rx_burst_sym_select=rx_buffers_Quant(sample_cnt,:);   %选择一个采样点作为数据来源 注意这里已经截断成150个符号

           [Syn_Position_suzhu(sample_cnt),max_corr_shuzu(sample_cnt)]=DetectSyn_New(rx_burst_sym_select);  %选择的50-70这个范围内找同步字

       end

       %采用原来Dsp的方法  找到最佳采样点

       [optimumIdx,Sumerr_Collect]=OptimumSamplingIndex(rx_buffers_Quant);  %最佳采样点是 optimumIdx

       

       Syn_start1=Syn_Position_suzhu(optimumIdx);  %根据选择的方法计算的最佳采样点 推导出同步的24符号开始的位置    

       burst_start=Syn_start1-60;

       fprintf('同步开始位置=%d optimumIdx=%d \n',Syn_start1,optimumIdx);


       

       %%  计算 errobit

       rx_buffers=rx_buffers(:,burst_start:(burst_start+144-1));

       [ReceiveBits_opt,errBits]=Calcu_erro(rx_buffers,optimumIdx,txBits);

%         if errBits~=0

%          

%             fprintf('optimumIdx=%d \n',optimumIdx);

%              bbb=1;

%         end

       

       BER_opt(n1) = BER_opt(n1)  + errBits;

       

   end

   

end



% BER_opt_B = BER_opt/MaxIter/bitLen;

%

% save 3_BER_opt_B.mat BER_opt_B;


% % BER_offset = BER_offset/MaxIter/bitLen;

% figure;

% semilogy(SNR,BER_opt,'b-*'); hold on;

% % semilogy(SNR,BER_offset,'r-o'); hold on;

% % legend('optimum Sampling','T/20 offset')

% xlabel('SNR'); ylabel('BER');

% grid on;

% % toc

⛄ 运行结果

⛄ 参考文献

[1] 向长波, 李惠, 王玉霞,等. 基于Matlab/Simulink的GSM系统物理层仿真[J]. 中国新通信, 2015, 17(10):2.

[2] 史晓霞. 基于Matlab的3L物理层系统仿真平台的研究与实现[D]. 北京邮电大学, 2016.

[3] 康志杰, 白清, 张松轶,等. 一种适用于PDT/DMR的跳频同步方法:, CN112737634A[P]. 2021.

[4] 康志杰, 白清, 张松轶,等. 一种适用于PDT/DMR的跳频组呼迟后加入方法:, CN112737633A[P]. 2021.

⛳️ 完整代码

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


相关文章
|
3月前
|
数据可视化
基于MATLAB的OFDM调制发射与接收仿真
基于MATLAB的OFDM调制发射与接收仿真
|
2月前
|
5G
基于IEEE 802.11a标准的物理层MATLAB仿真
基于IEEE 802.11a标准的物理层MATLAB仿真
214 0
|
3月前
|
监控 算法
基于SEIR传染病模型的社会舆情传播matlab模拟与仿真
本项目基于SEIR传染病模型构建社会舆情传播分析系统,利用MATLAB 2022A进行仿真测试。通过数值求解微分方程组,模拟舆情从产生、扩散到平息的全过程,揭示其内在传播规律。模型将人群分为易感者、暴露者、感染者和康复者四类,结合真实推文数据绘制传播曲线,验证模型有效性,为舆情监控与干预提供科学依据。
|
3月前
|
传感器 机器学习/深度学习 数据采集
四旋翼飞行器及电机动力学研究(Matlab代码、Simulink仿真实现)
四旋翼飞行器及电机动力学研究(Matlab代码、Simulink仿真实现)
196 2
|
3月前
|
算法 测试技术 Python
【IEEE复现】配电网可靠性评估用于分配优化模型:一种非仿真的线性规划方法(Matlab代码实现)
【IEEE复现】配电网可靠性评估用于分配优化模型:一种非仿真的线性规划方法(Matlab代码实现)
|
3月前
|
算法 机器人
基于SOA海鸥优化算法的PID控制器最优控制参数计算matlab仿真
本课题研究基于海鸥优化算法(SOA)优化PID控制器参数的方法,通过MATLAB仿真对比传统PID控制效果。利用SOA算法优化PID的kp、ki、kd参数,以积分绝对误差(IAE)为适应度函数,提升系统响应速度与稳定性。仿真结果表明,SOA优化的PID控制器在阶跃响应和误差控制方面均优于传统方法,具有更快的收敛速度和更强的全局寻优能力,适用于复杂系统的参数整定。
|
2月前
|
算法
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
基于MATLAB/Simulink平台搭建同步电机、异步电机和双馈风机仿真模型
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
2月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
3月前
|
传感器 算法 数据挖掘
基于协方差交叉(CI)的多传感器融合算法matlab仿真,对比单传感器和SCC融合
基于协方差交叉(CI)的多传感器融合算法,通过MATLAB仿真对比单传感器、SCC与CI融合在位置/速度估计误差(RMSE)及等概率椭圆上的性能。采用MATLAB2022A实现,结果表明CI融合在未知相关性下仍具鲁棒性,有效降低估计误差。
241 15

热门文章

最新文章