【功率控制】无线光通信-CDMA中闭环链路的功率控制MATLAB仿真
1.软件版本
matlab2017b
2.本算法理论知识
编写无线光通信-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的关系。信道设在AWGN环境下,初始值都以交予你们的无线光通信主程序为准。
最后的结果图出:
一张不使用功率控制的无线光通信-CDMA系统中用户端与基站之间的距离和BER的曲线图。
一张使用了功率控制之后的系统中用户端与基站之间距离与BER的曲线图。
一张功率控制误差在不同的调制方式下的BER曲线图,
一张功率控制误差在不同的码率下的BER曲线图。
用不同颜色标明不同的调制方式和码率,调制方式在一张图中,码率在一张图中。
首先,根据参考文献
关于功率控制误差估计的背景和相关理论知识,我们在设计的时候,满足如下额条件:
这里,只考虑一个基站几个用户的情况,所以仅考虑CDMA环境中的路径衰落模型。
3.核心代码
clc; clear; close all; warning off; addpath 'func\'%% %参数初始化 global PACKET_LENGTH; global SLOT_LENGTH ; global pulse_drtn; global CHANNELS; global PEEK_POWER; global SYMBOL_LENGTH; global TRANS_LENGTH;PACKET_LENGTH = 300; %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 = 4e8; % 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:CHANNELSsentbit(i,:) = zeros(1,3*PACKET_LENGTH);signal(i,:) = zeros(1,TRANS_LENGTH);recivbit(i,:) = zeros(1,3*PACKET_LENGTH); enddwTransmitPower = 7; % 发送功率 dShadowFadingStd = 4; % 阴影衰落标准差BS2UE dB dUserVelocity = 0; % 用户移动速度0km/h,这里假设是静止的 dwMsTransmitPower = 0.25; % 移动台发送功率 W MAX_Dis = 7; STEP = 0.2; MIN_Dis = 1;DIS = [MIN_Dis:STEP:MAX_Dis];%定义用户和基站之间的距离 MTKL = 10;%多次仿真,计算平均值 %**************************************************************************%% %主题函数,通过for循环,仿真不同距离下的误码率曲线 %为了对比,我们设置三组不同的SNR下的AWGN进行仿真 for jj = 1:length(DIS) for mm = 1:MTKLjjmm%根据路径距离计算路径损耗PASS_LOSS = dwTransmitPower - Path_lose_compute(DIS(jj)) - dShadowFadingStd;%计算光三组元色对应的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:CHANNELSsentbit(i,:) = round(rand(1,3*PACKET_LENGTH)); end%调制,OPPM for i=1:CHANNELSsignal(i,:) = func_OPPM(sentbit(i,:));end%加多径if multipath~=1 for i=1:CHANNELSsignal(i,:) = add_multipath_dispersion1(signal(i,:),TRANS_LENGTH,sample_rate,rms_delay);endend%加噪声signal(1,:)=add_gauss_noise(signal(1,:),TRANS_LENGTH, VarR); signal(2,:)=add_gauss_noise(signal(2,:),TRANS_LENGTH, VarG);signal(3,:)=add_gauss_noise(signal(3,:),TRANS_LENGTH, VarB); %解调for i=1:CHANNELSrecivbit(i,:) = func_deOPPM(signal(i,:));endfor i=1:CHANNELSerror(i,:) = size(find(recivbit(i,:)~=sentbit(i,:)),2);endERR(mm) = (error(1,:)+error(2,:)+error(3,:))/(CHANNELS*3*PACKET_LENGTH);endber(jj) = mean(ERR); end %**************************************************************************%% %画出波形 figure; semilogy(MIN_Dis:STEP:MAX_Dis,ber,'b-o'); axis([DIS(1) DIS(end) 10^(-5) 1]) xlabel('distance(Km)'); ylabel('Bit Error Rate'); grid on%保存数据,用于和加功率控制模块的对比 save Ber_with_no_power_control_error.mat MIN_Dis STEP MAX_Dis ber %**************************************************************************
4.操作步骤与仿真结论
这里,主要对OOK,2PPM,4PPM,8PPM,16PPM五种方法进行仿真,这里我们还是考虑原始的仿真方法,即在一个固定位置,改变功率值进行仿真,即和之前的VLC-OOK一样的仿真思路。
将上面的五种调制方式放在一起对比,得到的仿真结果如下所示:
在1/4code rate, 1/2 code rate, 3/4 code rate不同码率下与BER的关系,这里,在原有的代码的基础上,进行不同码率的仿真。
5.参考文献
A01-57
6.完整源码获得方式
方式1:微信或者QQ联系博主
方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码
总结
以上是生活随笔为你收集整理的【功率控制】无线光通信-CDMA中闭环链路的功率控制MATLAB仿真的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 【混沌加解密调制解调】基于FPGA的混沌
- 下一篇: 【GUI转exe】Matlab将GUI转