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

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

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模块,其基本结构如下所示:

1.png

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

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

2.仿真效果预览
matlab2022a仿真结果如下:

2.png
3.png
4.png
5.png

3.MATLAB部分代码预览

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
相关文章
|
9天前
|
机器学习/深度学习 算法
基于改进遗传优化的BP神经网络金融序列预测算法matlab仿真
本项目基于改进遗传优化的BP神经网络进行金融序列预测,使用MATLAB2022A实现。通过对比BP神经网络、遗传优化BP神经网络及改进遗传优化BP神经网络,展示了三者的误差和预测曲线差异。核心程序结合遗传算法(GA)与BP神经网络,利用GA优化BP网络的初始权重和阈值,提高预测精度。GA通过选择、交叉、变异操作迭代优化,防止局部收敛,增强模型对金融市场复杂性和不确定性的适应能力。
139 80
|
2天前
|
机器学习/深度学习 算法
基于遗传优化的双BP神经网络金融序列预测算法matlab仿真
本项目基于遗传优化的双BP神经网络实现金融序列预测,使用MATLAB2022A进行仿真。算法通过两个初始学习率不同的BP神经网络(e1, e2)协同工作,结合遗传算法优化,提高预测精度。实验展示了三个算法的误差对比结果,验证了该方法的有效性。
|
5天前
|
机器学习/深度学习 数据采集 算法
基于PSO粒子群优化的CNN-GRU-SAM网络时间序列回归预测算法matlab仿真
本项目展示了基于PSO优化的CNN-GRU-SAM网络在时间序列预测中的应用。算法通过卷积层、GRU层、自注意力机制层提取特征,结合粒子群优化提升预测准确性。完整程序运行效果无水印,提供Matlab2022a版本代码,含详细中文注释和操作视频。适用于金融市场、气象预报等领域,有效处理非线性数据,提高预测稳定性和效率。
|
1天前
|
算法
基于梯度流的扩散映射卡尔曼滤波算法的信号预处理matlab仿真
本项目基于梯度流的扩散映射卡尔曼滤波算法(GFDMKF),用于信号预处理的MATLAB仿真。通过设置不同噪声大小,测试滤波效果。核心代码实现数据加载、含噪信号生成、扩散映射构建及DMK滤波器应用,并展示含噪与无噪信号及滤波结果的对比图。GFDMKF结合非线性流形学习与经典卡尔曼滤波,提高对非线性高维信号的滤波和跟踪性能。 **主要步骤:** 1. 加载数据并生成含噪测量值。 2. 使用扩散映射捕捉低维流形结构。 3. 应用DMK滤波器进行状态估计。 4. 绘制不同SNR下的轨迹示例。
|
6天前
|
机器学习/深度学习 算法 索引
单目标问题的烟花优化算法求解matlab仿真,对比PSO和GA
本项目使用FW烟花优化算法求解单目标问题,并在MATLAB2022A中实现仿真,对比PSO和GA的性能。核心代码展示了适应度计算、火花生成及位置约束等关键步骤。最终通过收敛曲线对比三种算法的优化效果。烟花优化算法模拟烟花爆炸过程,探索搜索空间,寻找全局最优解,适用于复杂非线性问题。PSO和GA则分别适合快速收敛和大解空间的问题。参数调整和算法特性分析显示了各自的优势与局限。
|
14天前
|
供应链 算法 调度
排队算法的matlab仿真,带GUI界面
该程序使用MATLAB 2022A版本实现排队算法的仿真,并带有GUI界面。程序支持单队列单服务台、单队列多服务台和多队列多服务台三种排队方式。核心函数`func_mms2`通过模拟到达时间和服务时间,计算阻塞率和利用率。排队论研究系统中顾客和服务台的交互行为,广泛应用于通信网络、生产调度和服务行业等领域,旨在优化系统性能,减少等待时间,提高资源利用率。
|
21天前
|
存储 算法
基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真
本项目基于HMM模型实现金融数据预测,包括模型训练与预测两部分。在MATLAB2022A上运行,通过计算状态转移和观测概率预测未来值,并绘制了预测值、真实值及预测误差的对比图。HMM模型适用于金融市场的时间序列分析,能够有效捕捉隐藏状态及其转换规律,为金融预测提供有力工具。
|
21天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
24天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
8天前
|
算法
基于EO平衡优化器算法的目标函数最优值求解matlab仿真
本程序基于进化优化(EO)中的平衡优化器算法,在MATLAB2022A上实现九个测试函数的最优值求解及优化收敛曲线仿真。平衡优化器通过模拟生态系统平衡机制,动态调整搜索参数,确保种群多样性与收敛性的平衡,高效搜索全局或近全局最优解。程序核心为平衡优化算法,结合粒子群优化思想,引入动态调整策略,促进快速探索与有效利用解空间。

热门文章

最新文章