【功率控制】无线光通信-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的混沌
- 下一篇: 【64QAM同步】基于FPGA/MATL