m基于matlab的无线光通信CDMA闭环链路功率控制算法仿真,对比了OOK,2PPM,4PPM,8PPM,16PPM

news2024/9/27 7:23:52

目录

1.算法描述

2.仿真效果预览

3.MATLAB部分代码预览

4.完整MATLAB程序


1.算法描述

        在光通信领域,多址技术主要有WDM(波分复用)、TDM(时分复用)及OCDMA(光码分多址)三种方式。OCDMA技术从70年代中期开始出现,现在引起了人们的广泛重视。将CDMA(码分多址)技术用于光通信中,不仅保持了CDMA技术在无线电中的抗干扰、保密、软容量及网络协议简单等特性,而且可以利用光载体的巨大带宽。

       因此,CDMA技术和光通信的结合存在着优势互补。 本文围绕OCDMA系统及其关键技术展开研究工作。在本文中,我们对OCDMA的关键技术进行了理论分析,提出了几种新的地址码,提出了一些新方案来改善系统性能。同时,开展了时域非相干OCDMA的实验工作。

       编写无线光通信-CDMA中闭环链路的功率控制误差(Power control error)程序,其定义参考文献An Analytical Approach for Closed-Loop Power Control Error Estimations in CDMA Cellular Systems中详细说明了。仿真出功率控制误差(Power control error)在OOK 2PPM 4PPM 8PPM 16PPM的不同调制方式下;以及功率控制误差(Power control error)在1/4code rate, 1/2 code rate, 3/4 code rate不同码率下与BER的关系。通过给每个用户指定互相关为0的两个地址码分别发送1和0信号以及在接收端采用差分检测技术,避免了OOK(开关键控)光通信系统中0不发送光脉冲和OOK常规检测方式下最佳判决门限必须根椐用户数等外界环境而改变,从而提高了系统性能和降低了系统的复杂度。通过引入OPPM(重叠脉冲脉位调制)方式,进一步提高了系统的传输效率。 

        这里我们首先建立一个cdma小区通信环境,然后根据光通信代码在CDMA的基础上,使用光通信进行通信,然后在此基础上加入功率工作,不同的调制方式以及不同的码率等进行仿真。

       加入功率控制PCE模块,其基本结构如下所示:

 对OOK,2PPM,4PPM,8PPM,16PPM五种方法进行仿真。

        光CDMA方式是基于OTDM和WDM之上的一种多路存取方式,它可以使相同带宽和比特率的光信号携带更多的信息。在光纤CDMA(OCDMA)中,每一位数据都被一个序列编码,每个用户都有一个单独的序列,在发送端,对要传输的数据的序列码进行光正交编码,然后实现多个用户共享同一光纤信道;在接收端,用与发送端相同的地址码进行光正交解码,恢复原用户数据。
        CDMA技术的原理是基于扩频技术,即将需传送的具有一定信号带宽信息数据,用一个带宽远大于信号带宽的高速伪随机码进行调制,使原数据信号的带宽被扩展,再经载波调制并发送出去。CDMA使用带扩频技术的模数转换(ADC).输入音频首先数字化为二进制元。传输信号频率按指定类型编码,因此只有频率响应编码一致的接收机才能拦截信号。

2.仿真效果预览

matlab2022a仿真结果如下:

 

 

3.MATLAB部分代码预览

PACKET_LENGTH  = 1000;  %Packet size 
PEEK_POWER     = 1;
SYMBOL_LENGTH  = 36;   %here symbol length= packet length 
SLOT_LENGTH    = 4;  
TRANS_LENGTH   = 9*SLOT_LENGTH*PACKET_LENGTH;
pulse_drtn     = 4;
CHANNELS       = 3;
ELECTRON       = 1.6e-19;
INTERFERENCE   = 1e-3;
RECEIVER_RES   = 0.53;
COEF_RED       = 0.1550;
COEF_GREEN     = 1.7309;
COEF_BLUE      = 1.1142;
RES_RED        = 0.5200;
RES_GREEN      = 0.4800;
RES_BLUE       = 0.4000;
%Derived parameters 
bit_rate       =  16e8;                          % bit rate [100Mbps]  
rms_delay      =  2e-9;                         % delay spread (1 ns)                                                      
multipath      =  3;                            % multi-path dispersion
sample_rate    =  bit_rate / 3.0 * SLOT_LENGTH;
%struct built
for i=1:CHANNELS
    sentbit(i,:)  = zeros(1,3*PACKET_LENGTH);
    signal(i,:)   = zeros(1,12*PACKET_LENGTH);
    recivbit(i,:) = zeros(1,3*PACKET_LENGTH);
end
 
dwTransmitPower           = 7;        % 发送功率
dShadowFadingStd          = 4;        % 阴影衰落标准差BS2UE dB
dUserVelocity             = 0;        % 用户移动速度0km/h,这里假设是静止的
 
MAX_Dis                   = 7;
STEP                      = 0.2;
MIN_Dis                   = 1;
 
DIS                       = [MIN_Dis:STEP:MAX_Dis];%定义用户和基站之间的距离
MTKL                      = 20;%多次仿真,计算平均值
Avgtime                   = 200;
Delay                     = 5;
 
startpow                  = -70;    
endpow                    = -40;  
powstep                   =  5;     
%**************************************************************************
 
%%
%主题函数,通过for循环,仿真不同距离下的误码率曲线
%为了对比,我们设置三组不同的SNR下的AWGN进行仿真
%由于原先的程序是基于数据组进行仿真,而基于PCE估计的算法,需要基于时间流模型,所以必须将
%仿真的方法修改下,即对每一个数据位单独的循环仿真,从而模拟出实时的效果
 
E1 = zeros(PACKET_LENGTH,1);
E2 = zeros(PACKET_LENGTH,1);
E3 = zeros(PACKET_LENGTH,1);
cnt = 0;
for jj = 0.1:0.05:0.5   
    cnt = cnt + 1;
    for mm = 1:MTKL
        jj
        mm
        %根据路径距离计算路径损耗
        PASS_LOSS = -25;
        %计算光三组元色对应的SNR值
        snr_red   = 10*log10(power((power(10,PASS_LOSS/10)*1e-3)*(COEF_RED  /(COEF_RED+COEF_GREEN+COEF_BLUE)),2)/((ELECTRON*INTERFERENCE/RES_RED)  *(bit_rate*(SLOT_LENGTH/pulse_drtn)/3.0)));
        snr_green = 10*log10(power((power(10,PASS_LOSS/10)*1e-3)*(COEF_GREEN/(COEF_RED+COEF_GREEN+COEF_BLUE)),2)/((ELECTRON*INTERFERENCE/RES_GREEN)*(bit_rate*(SLOT_LENGTH/pulse_drtn)/3.0)));
        snr_blue  = 10*log10(power((power(10,PASS_LOSS/10)*1e-3)*(COEF_BLUE /(COEF_RED+COEF_GREEN+COEF_BLUE)),2)/((ELECTRON*INTERFERENCE/RES_BLUE) *(bit_rate*(SLOT_LENGTH/pulse_drtn)/3.0)));
        VarR      = calc_snr(snr_red);
        VarG      = calc_snr(snr_green);
        VarB      = calc_snr(snr_blue);
 
 
        %产生随机数作为发送数据
        for i=1:CHANNELS
            sentbit(i,:) = round(rand(1,3*PACKET_LENGTH)); 
        end
 
 
        for times = 1:3*PACKET_LENGTH%每一时刻,发送一个数据包
            S1 = 1*(times-1) + 1;
            F1 = 1*times;
            S2 = 4*(times-1) + 1;
            F2 = 4*(times);
            
            %**********************************************************************
            %根据上一次反馈得到的E进行功率的调整
            %**********************************************************************
            %对E取倒数
            %对应公式Pt(t) = Pt(t-D)/E(t-D) = 1/r(t-D)
            Coff(1,times) = 1/jj;% 之后,根据前一次的E进行调整发送功率
            Coff(2,times) = 1/jj;% 之后,根据前一次的E进行调整发送功率
            Coff(3,times) = 1/jj;% 之后,根据前一次的E进行调整发送功率  
            
            %调制,OOK 
            for i=1:CHANNELS
                signal(i,S2:F2) = func_1in4(sentbit(i,S1:F1),Coff(i,times));
            end
 
            %加多径
            if multipath~=1 
               for i=1:CHANNELS
                   signa2(i,S2:F2) = add_multipath_dispersion1(signal(i,S2:F2),4,sample_rate,rms_delay);
               end
            end
 
            
            %加噪声
            signal(1,S2:F2)=add_gauss_noise(signal(1,S2:F2),length(S2:F2), VarR);      
            signal(2,S2:F2)=add_gauss_noise(signal(2,S2:F2),length(S2:F2), VarG);
            signal(3,S2:F2)=add_gauss_noise(signal(3,S2:F2),length(S2:F2), VarB); 
        
 
            %解调
            for i=1:CHANNELS
                recivbit(i,S1:F1) = func_de1in4(signal(i,S2:F2),Coff(i,times));
            end
        end
 
        for i=1:CHANNELS
            error(i,:) = size(find(recivbit(i,:)~=sentbit(i,:)),2);
        end
        ERR(mm) = (error(1,:)+error(2,:)+error(3,:))/(CHANNELS*3*PACKET_LENGTH);
    end
    ber(cnt) = mean(ERR);
end
01_057_m

4.完整MATLAB程序

matlab源码说明_我爱C编程的博客-CSDN博客

V

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谁能拒绝一个会动的皮卡丘挂件

说在前面 🎈相信很多80、90后的朋友,对QQ宠物印象非常深刻,每次开机宠物就会自动跑出来。曾经很多人想饿死他,但失败了;也有很多人一上线就退出,但就是不愿因取消“开机自动开启”的勾选。2018年09月15日&a…

基于simulink的直升机控制系统

目录 1.算法描述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法描述 直升机机体减振为目标,研究基于自适应滤波技术的前馈控制问题.为了模拟机体的力学特性以及旋翼对机体的激振作用,采用了FIR,SIIR等滤波模型进行识别和控制.通过对作动器和与之相适应的滤…

【MyBatis】二、入门程序

第一个程序 一、resources目录 放在resources目录的一般是资源文件、配置文件&#xff0c;直接放在该路径的资源相当于放到了类的根路径下。 二、开发步骤 1.打包方式jar <!--打包方式jar--><packaging>pom</packaging>2.引入依赖 mybatis依赖 mysql驱动…

网页设计成品DW静态网页Html5响应式css3——电影网站bootstrap制作(4页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

求圆心到点的直线与圆的相交点

求圆心到点的直线与圆的相交点 点B为圆上一动点&#xff0c;已知圆心O(x2,y2), 圆外点A(x1,y1)&#xff0c;圆半径r值&#xff0c;求B(x,y)坐标。 由图可知,产生下面两个公式。 m/n y1-y2/x1-x2 m^2n^2r^2 由上面的公式可以得出 n的长度计算公式为n^2 r^2 / [ (y1-y2 / x1-x…

昨日,一老师课前预测日本赢球,结果令人惊叹

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 世界杯是当前最为热门的一个体育赛事&#xff0c; 也是很多小伙伴最为喜欢的一个体育运动之一 而在昨日第四场&#xff1a;F组第一轮&#xff0c;比赛时间&#xff1a;2022年11月23日 21:00 德国VS日本 被一老师成功预测…

视频怎么加水印?这里有你想要的答案

现在不管是游戏解说&#xff0c;还是一些网课视频&#xff0c;亦或是视频博主制作的vlog&#xff0c;我们都能看到这些视频带上了水印&#xff0c;它不仅可以防止其他人随意盗用视频&#xff0c;还可以很好地为自己作宣传&#xff0c;吸引流量。不过还是有很多小伙伴没有著作权…

大部分PHP程序员,都搞不懂如何安全代码部署【二】(nginx篇)

在此之前发布了 代码安全部署的&#xff0c;里面写的nginx 配置安全写了一点点&#xff0c;今天具体补充一下nginx 的配置 nginx站点目录及文件URL访问控制 一、根据扩展名限制程序和文件访问 利用nginx配置禁止访问上传资源目录下的PHP、Shell、Perl、Python程序文件。配置…

基于图像识别的小车智能寻迹控制系统

目录 摘要…… I Abstract II 基于图像识别的智能寻迹控制系统设计 I Design of Intelligent tracking Control system based on Image recognition II 目录 III 第1章 绪论 1 1.1 课题背景 1 1.1 国内外文献综述 1 1.2 论文研究内容 2 第2章 基于图像识别的智能寻迹控制系统方…

代码随想录训练营第30天|LeetCode 332.重新安排行程、51. N皇后、 37. 解数独、回溯总结

参考 代码随想录 题目一&#xff1a;LeetCode 332.重新安排流程 这道题目有几个难点&#xff1a; 一个行程中&#xff0c;如果航班处理不好容易变成一个圈&#xff0c;成为死循环有多种解法&#xff0c;字母序靠前排在前面&#xff0c;让很多同学望而退步&#xff0c;如何该…

没有项目管理经验,可以参加PMP考试吗?

咱们先来了解一下PMP&#xff0c;PMP认证是一项针对项目管理的资格认证&#xff0c;属于管理学中的经济/项目管理&#xff0c;也是目前职业资格认证中含金量较高的&#xff0c;堪比MBA、MPA。 许多大型私企和外企在招聘项目管理者和项目组成员的时候都优先考虑持有PMP认证的人…

【问题】Nginx部署vue项目进行跳转二级路由报404无法找到目标页面问题和Nginx部署vue项目访问不了接口

Nginx部署vue项目进行跳转二级路由报404无法找到目标页面问题和Nginx部署vue项目访问不了接口 文章目录Nginx部署vue项目进行跳转二级路由报404无法找到目标页面问题和Nginx部署vue项目访问不了接口Nginx部署vue项目进行跳转二级路由报404无法找到目标页面问题**问题** &#x…

社区垃圾分类督导AI盒子应用的痛点难点分析

载止于2022年底&#xff0c;我司A社区垃圾分类督导AI视频分析盒子已经在华东(上海、杭州、无锡等地&#xff09;&#xff0c;华南地区&#xff08;深圳等地&#xff09;大量上线&#xff0c;本人负责垃圾分类算法AI盒子的开发历时5年之久&#xff0c;从多年试点到现在规模上线使…

react源码分析:组件的创建和更新

这一章节就来讲讲ReactDOM.render()方法的内部实现与流程吧。 因为初始化的源码文件部分所涵盖的内容很多&#xff0c;包括创建渲染、更新渲染、Fiber树的创建与diff&#xff0c;element的创建与插入&#xff0c;还包括一些优化算法&#xff0c;所以我就整个的React执行流程画了…

算法入门 | 二叉树的递归遍历、递归创建系列(递归)

目录 1. 二叉树的遍历规则 2. 二叉树的结构体设计 【leftchild data rightchild】 3. 二叉树的递归先序、中序、后序遍历 4. 利用已知字符串&#xff08;二叉树的先序序列&#xff09;递归创建一棵二叉树 &#xff08;1&#xff09;购买节点函数 &#xff08;2&#xff…

【附源码】计算机毕业设计JAVA移动学习网站

【附源码】计算机毕业设计JAVA移动学习网站 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA mybati…

阻止网络钓鱼诈骗的技巧

根据 Verizon 的2022 年数据泄露调查报告&#xff0c;25% 的数据泄露始终涉及网络钓鱼。 这是怎么发生的&#xff1f;参与网络钓鱼的欺诈者往往是一些掌握发文技巧的内容作者。他们知道如何创造一种紧迫感&#xff0c;让您点击通知并阅读消息。 很多用户落入了他们的陷阱&…

录屏软件哪个好?比较好用的录屏软件,这4款值得一试!

​现在很多人都会使用录屏软件&#xff0c;有些用来录制游戏里的精彩操作&#xff0c;有些用来录制线上的教学课程&#xff0c;有些用来录制在线视频会议。如今录屏软件种类繁多。选择一个好的录屏软件十分重要。录屏软件哪个好&#xff1f;比较好用的录屏软件有哪些&#xff1…

Zebec开启多链布局,流支付生态持续扩张

随着 Do Kwon 的Terra 以及 Sam Bankman-Fried 的 FTX&#xff0c;这两个加密行业的“庞大帝国”轰然倒塌后&#xff0c;Terra生态毁于一旦&#xff0c;而辉煌一时的Solana生态也失去了“靠山”&#xff0c;尤其是在Solana屡次宕机、在FTX危机时增发SOL代币后&#xff0c;进一步…

骨传导耳机会损伤大脑吗?一分钟详细了解骨传导耳机

骨传导耳机会损伤大脑吗&#xff1f;这个问题一直都有很多人在问&#xff0c;相对传统入耳式耳机来说&#xff0c;骨传导耳机更能保护我们的听力与大脑&#xff0c;骨传导耳机的工作原理跟传统耳机不一样&#xff0c;它不会损伤到大脑&#xff0c;下面我来跟大家说一下骨传导耳…