m基于光纤光栅传感网接入GPON的光纤通信系统matlab性能仿真,包括解码,解封装,分接,码率恢复,解帧,拆包,译码
目录
1.算法描述
2.仿真效果预览
3.MATLAB部分代码预览
4.完整MATLAB程序
1.算法描述
接入处理系统模块化设计:
·传感器接收到的信息转换为二进制信息(这个我们可以直接模拟出随机的二进制序列来表示传感器的数据,首先设置一组数据,然后进行量化,最后进行转换为二进制。这个部分的仿真结果对应你提供论文的3.2.1部分)
·封装,将编码后的数据进行封装,即将数据变为数据包,再把数据包转换为数据帧
·码率调整,主要将瞬时数码率不同的多个数码流调整为具有同一较高的数码率的数码流,然后再进行时分复接。
·最后由时分复接得到传感复用帧结构。
·码分编码封装发送(二进制数据编码,这里,编码方式我们选择性能非常好的LDPC编码)
在发送端,这里根据仿真要求,模拟五个子网
接收部分:
码分解码,解封装,分接,码率恢复,解帧,拆包,译码。。。。。
最后对整个系统进行误码率的分析,对五个子网的数据进行误码率分析,眼图以及Q因子分析。
2.仿真效果预览
matlab2022a仿真结果如下:
3.MATLAB部分代码预览
for jj1 = 1:length(EbN0)jj1Ind = Ind + 1;Err_Rate2 = zeros(1,TIMES);for jj2 = 1:TIMESjj2Num_NET = 5;%模拟子网的个数Lens = 500;%传感器采集数据长度%传感信息的净荷值相关参数A = -40;B = 120;Delta = 0.2;Ld = (ceil(log2((B-A)/Delta)));%传感子网数据帧的封装Preamble=[0,1,1,1,1,1,1,0];%帧前导码取特殊字符串01111110,表示帧同步,便于传感监控中心判断出帧的起始位置,%子网ID号,本案为5个子网,所以ID为三bit数据,但是为了具有扩展性,ID用四个bit表示ID =[0,0,0,0;0,0,0,1;0,0,1,0;0,0,1,1;0,1,0,0];%HEC为帧头校验码HEC = [0,1,0,1]; %包头Head = [0,0,1,1,0,0,1,1];%address,地址,随着采集数据,地址逐渐加1%传感器类型,假设五个子网,每个子网就一种类型type1 = [0,0,0,1;0,0,1,0;0,0,1,1;0,1,0,0;0,1,0,1];%包尾Trail = [1,1,0,0,1,1,0,0];Bao_Size= 10;%最后的复用帧的相关参数Sync = [0,0,0,0,0,0,1,1,1,0,1,0,1,1,1,1,1,0,0,0,1,0,1,1,0,0,0,0,0,1,0,1,1,1,0,1,0,1,1,1,1,1,0,1,1,1,0,1,0,0,0,0,0,1,0,1,1,1,0,1,0,1,0,0];Separator = [0,1,0,1];FCS = [1,0,0,1,1,0,1,1,1,0,0,1,1,0,0,1];N = 5;M = 5;%第一部分,系统发送部分%第一部分,系统发送部分%本案共有五个子网,所以模拟五组数据for nn = 1:Num_NET%模拟产生传感器采集到的数据,这里,为了模拟不同的码率,将采集的数据长度设置为不同y = func_sensor_samples(Lens,A,B);YY{nn} = y;if is_show(1) == 1figure(1);plot(y,'b');xlabel('times');ylabel('amplitude')title('模拟传感器采集到的数据');pause(0.1);end%光纤光栅传感信号的净荷值的二进制转换Lp = func_value2realvalue(y,A,B,Delta);if is_show(2) == 1figure(2);plot(Lp,'b');xlabel('times');ylabel('amplitude')title('模拟传感器采集到的数据的净荷值');pause(0.1);end%计算转换为二进制V2 = func_dec2bin(Lp,Ld);%将二进制转换为串行流Signal{nn} = (reshape(V2',size(V2,1)*size(V2,2),1))';%通过上面的步骤,我们模拟了实际要发送的二进制码流end
...................................................%对五个子网的数据进行时分复接%码率调整Out1 = func_Rate_sync(Signal3{1});Out2 = func_Rate_sync(Signal3{2});Out3 = func_Rate_sync(Signal3{3});Out4 = func_Rate_sync(Signal3{4});Out5 = func_Rate_sync(Signal3{5});%时分复接Out = func_tdma(Out1,Out2,Out3,Out4,Out5,Len_zhen);%传感复用帧tmps2 = [];tmps = [];for i = 1:length(Out)/(M*Len_zhen)tmps = [Sync,Separator,Out((i-1)*M*Len_zhen+1:i*M*Len_zhen),Separator,FCS];Len_zhen2 = length(tmps);tmps2 = [tmps2 tmps];endSignal4 = tmps2;%进行编码,编码矩阵为96*192,每次取80,并补充16个0作为虚拟填充符进行编码,共96个数据进行编码load H;load G;Trans_Signal = [];for i = 1:length(Signal4)/80Trans_data = [zeros(1,16),Signal4((i-1)*80+1:(i)*80)];%编码data_code = mod(Trans_data*G,2); %BPSKTrans_BPSK = 2*data_code-1; Len_code = length(Trans_BPSK);Trans_Signal = [Trans_Signal,Trans_BPSK];end%第二部分,信道,信道部分,由于是光纤传输,且您论文中没有详细说明这个部分内容,所以这里暂时仅考虑高斯白噪声%第二部分,信道,信道部分,由于是光纤传输,且您论文中没有详细说明这个部分内容,所以这里暂时仅考虑高斯白噪声sigma = sqrt(1./(10^(EbN0(Ind)/10)*0.5)); Rec_Signal = Trans_Signal + sigma*randn(1,length(Trans_Signal)); %第三部分,监控中心——接收端%第三部分,监控中心——接收端%译码R_Signal = [];for i = 1:length(Signal4)/80z_hat = func_Dec(Rec_Signal((i-1)*Len_code+1:i*Len_code),sigma,H,50);x_hat = z_hat(size(G,2)+1-size(G,1):size(G,2));R_Signal = [R_Signal,x_hat(17:end)'];%去掉16个填充符endif is_show(5) == 1st = func_eye(Trans_Signal);eyediagram(st,40)ylabel('信号幅度');title('原始信号眼图'); pause(0.1);end if is_show(6) == 1st = func_eye(Rec_Signal);eyediagram(st,40)ylabel('信号幅度');title('接收带噪声干扰信号眼图'); pause(0.1);end if is_show(7) == 1st = func_eye(R_Signal*2-1);eyediagram(st,40)ylabel('信号幅度');title('译码之后信号眼图'); pause(0.1);end %解封装%通过搜索sync来确定每帧的帧头[R_Signal,Sync_pos] = func_find_sync(R_Signal,Sync);if is_show(4) == 1figure(4);plot(Sync_pos,'b');hold on;plot(find(Sync_pos>=40),Sync_pos(find(Sync_pos>=40)),'r*');hold off;xlabel('times');ylabel('amplitude')title('解封装sync位置');pause(0.1);end%判断当前帧位置能否检测到帧头if_sync = zeros(1,length(Out)/(M*Len_zhen));%这个变量用来存放是否检测到当前帧,如果为0,则该帧未检测到,直接丢弃,检测下一帧for i = 1:length(Out)/(M*Len_zhen)if Sync_pos(1+(i-1)*Len_zhen2) > 40if_sync(i)=1;endend%解封装tmps3 = [];tmps2 = [];tmps = [];for i = 1:length(Out)/(M*Len_zhen)if if_sync(i) == 1tmps = R_Signal((i-1)*Len_zhen2+1:(i)*Len_zhen2);elsetmps = zeros(1,Len_zhen2);% 如果该帧没有检测到,那么直接赋值0end%解封装tmps2 = tmps(length(Sync)+length(Separator)+1:M*Len_zhen+length(Sync)+length(Separator));tmps3 = [tmps3 tmps2];endOuts = tmps3;%数字分接单元[I1,I2,I3,I4,I5] = func_tdma2(Outs,Len_zhen,M);%对五个子网的数据进行时分复接%码率调整Outr{1} = func_Rate_sync(I1);Outr{2} = func_Rate_sync(I2);Outr{3} = func_Rate_sync(I3);Outr{4} = func_Rate_sync(I4);Outr{5} = func_Rate_sync(I5);%将5路传感帧转换为数据帧,进一步拆封%由数据帧转换为传感帧for nn = 1:Num_NETtmps2 = [];tmps = [];LL = length(Preamble)+length(ID(nn,:))+length(HEC);for i = 1:length(Signal2{nn})/(N*Len_bao)tmps = Outr{nn}((i-1)*Len_zhen+1:i*Len_zhen);tmps2 = [tmps2 tmps(LL+1:end)];endOutr2{nn} = tmps2;end%将数据包中数据提取%Signal即为实际要发送的二进制码流%产生数据包数据包,这里,我们假设每个数据包中为10个采样数据,即100bit数据address = 0;for nn = 1:Num_NETtmps2 = [];tmps = [];LL = length(Head)+length(address2)+length(type1(nn,:));for i = 1:length(Signal{nn})/(Bao_Size*Ld)tmps = [Outr2{nn}((i-1)*Len_bao+1:i*Len_bao)];tmps2 = [tmps2 tmps(LL+1:end-length(Trail))];endOutr3{nn} = tmps2;end%误码率统计在转换为十进制之前计算[nberr1,rat1] = biterr(Outr3{1},Signal{1});[nberr1,rat2] = biterr(Outr3{2},Signal{2});[nberr1,rat3] = biterr(Outr3{3},Signal{3});[nberr1,rat4] = biterr(Outr3{4},Signal{4});[nberr1,rat5] = biterr(Outr3{5},Signal{5});Err_Rate0(jj2) = (rat1+rat2+rat3+rat4+rat5)/5; Err_Rate1(jj2) = rat1; Err_Rate2(jj2) = rat2; Err_Rate3(jj2) = rat3; Err_Rate4(jj2) = rat4; Err_Rate5(jj2) = rat5; endErr_Rate0s(Ind) = mean(Err_Rate0);Err_Rate1s(Ind) = mean(Err_Rate1);Err_Rate2s(Ind) = mean(Err_Rate2);Err_Rate3s(Ind) = mean(Err_Rate3);Err_Rate4s(Ind) = mean(Err_Rate4);Err_Rate5s(Ind) = mean(Err_Rate5);Q0(Ind) = sqrt(2)*erfcinv(2*Err_Rate0s(Ind)/10);Q1(Ind) = sqrt(2)*erfcinv(2*Err_Rate1s(Ind)/10);Q2(Ind) = sqrt(2)*erfcinv(2*Err_Rate2s(Ind)/10);Q3(Ind) = sqrt(2)*erfcinv(2*Err_Rate3s(Ind)/10);Q4(Ind) = sqrt(2)*erfcinv(2*Err_Rate4s(Ind)/10);Q5(Ind) = sqrt(2)*erfcinv(2*Err_Rate5s(Ind)/10);disp('over a cycle');end
01_068_m
4.完整MATLAB程序
matlab源码说明_我爱C编程的博客-CSDN博客
V
m基于光纤光栅传感网接入GPON的光纤通信系统matlab性能仿真,包括解码,解封装,分接,码率恢复,解帧,拆包,译码相关推荐
- 【光纤通信】光纤光栅传感网接入GPON的matlab仿真
1.软件版本 MATLAB2019a 2.本算法理论知识 发送部分: 根据论文中的需求,发送端可以设计为如下的结构: ·传感器接收到的信息转换为二进制信息(这个我们可以直接模拟出随机的二进制序列来表示 ...
- 基于QPSK的载波同步和定时同步性能仿真,包括Costas环的gardner环
目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 载波同步是相干解调的基础,不管对于模拟通信还是数字通信来说,只要是相干解调,接收端都必须 ...
- 基于相干解调法和基于相位比较法的2DPSK数字通信系统 MATLAB Simulink仿真
1 课程设计目的 通过课程设计,巩固已经学过的通信原理课程中有关数字调制系统的知识,加深对相关知识的理解和应用,学会应用Matlab Simulink工具对通信系统进行仿真和调试.设计与实现的过程中充 ...
- An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中一种基于蚁群算法的能量有效路由)
牙说:这篇论文是研究蚁群算法在能量有效路由协议的过程中必读的一篇文章,原是全英文,在这里按照自己的理解大致翻译成中文,好好学习,与君共勉. 论文题目:An Energy-Efficient Ant-B ...
- An Energy-Efficient Ant-Based Routing Algorithm for Wireless Sensor Networks (无线传感网中基于蚁群算法的能量有效路由)2
牙说:接着上一篇继续写. 论文标题:An Energy-Efficient Ant-Based Routing Algorithm forWireless Sensor Networks 作者:Tia ...
- 《高级计算机网络》之无线传感网——大连理工大学研究生课程整理笔记(非常详细,通俗易懂)
注:本文是根据大连理工大学研究生课程<高级计算机网络>整理的笔记,非常全面和详细,通俗易懂,对于您考试或者面试都会有很大的帮助,如果对您有用,请点个赞吧!! <高级计算机网络> ...
- 面向海洋观监测传感网的移动终端位置隐私保护研究
摘要: 移动边缘计算可支撑多类高可靠.低时延的海事应用,然而计算任务的卸载存在诸多安全隐患.为此,分析并量化了海洋移动终端由任务卸载导致的位置隐私泄露风险.建立有关位置隐私保护模型并提出一种基于动态缓 ...
- 无线传感网路由协议(一)
(一)概述 一.无线传感器路由协议的特点与要求 1.特点 无线传感网路由协议负责将分组从源节点通过网络节点转发到目的节点,它主要包括两个方面的功能:①寻找源节点和目的节点间的优化路径 ②将数据分组沿着 ...
- 什么是物联网,与传感网之间,有什么区别
物联网是什么? 最初的物联网的概念是由美国提出来的,把所有的物品通过物联网域名相连接,进行信息交换和通信,以实现智能化识别.定位.跟踪等等的一种网络概念.当然了,物联网的官方定义是:是基于互联网之上, ...
最新文章
- debian10 简单搭建squid
- 为什么数学无法给机器意识
- php 管理服务器内存,解决PHP-FPM进程导致的服务器内存占用
- java sql 参数_java jdbc连接数据库,Properties 属性设置参数方法
- WebLogic8.1 配置SSL/HTTPS单向认证
- Android socket 学习记录 之 执行new socket(ip, port)程序崩溃
- FPGA硬件学习基础知识点总结(1)
- python项目如何上线_django项目部署上线(示例代码)
- JavaEE实战班第三天
- 基于Token的WEB后台登录认证机制(并讲解其他认证机制以及cookie和session机制)
- jquery proxy delegate 的比较
- [转]几种图像处理类库的比较
- 使用Dockerfile构建镜像-Docker for Web Developers(5)
- BZOJ2555:SubString(SAM,LCT)
- jQuery 文档操作方法大全(也适用于 XML 文档和 HTML 文档)
- 【Python】绘制PR曲线
- mysql拼图游戏代码_HTML+Javascript制作拼图小游戏详解(二)
- 【关于油猴的安装和使用的教程】
- 小伙子开超市,抓住“人性贪婪”,二个步骤过后,生意瞬间火爆!
- UE4,UE5虚幻引擎源码版下载