FDD系统
clc
clear all
N= 10.^4;
bits_per_symbol=2;
?%噪聲一定
fc=9e8;?
lamda = 3e8/fc;
d0=100; ?sigma=7;
d=780000;n=2;
PL = -20*log10(lamda/(4*pi*d0)) + 10*n*log10(d/d0)+sigma*randn(1);
% BW=10^7; %單位Hz,工作帶寬,FDD系統,上下行各10MHz
% ?NOISE=-174;%噪聲譜密度,單位dBm/Hz
% ?N1=NOISE+10*log10(BW)
% ?N0 = 10^(N1/10);
N_snr=20; ? ? ? ? ?% 每比特信噪比
snr=1; ? ? ? ? ? ? %信噪比間隔
PL_SR=154;
? ? %生成偽隨機二進制序列并調制
? ? ?X=randint(1,N);%產生二進制隨即序列(非0即1)
%--------------------------------------------------------
%QPSK調制:(1 1)->pi/4;(0 1)->3*pi/4;(0 0)->-3*pi/4;(1,0)->-pi/4;
s=(X.*2-1)/sqrt(2);
sreal=s(1:2:N);
simage=s(2:2:N);
X1=sreal+j.*simage;
% ? ? psudo_bit_sequence=randi([0,M-1],1,N);
% ? ? qpsk_sequence= pskmod(psudo_bit_sequence,M);
Signal_offset=X1;
%---------------------------------------------------------------
%Lutz模型
KdB=7;
?Fade_percentage=0.3;
Log_sigma_dB=12;
Log_miu_dB=-12.9;
Channel_num=1;
Log_noise_sigma=10^(Log_sigma_dB/10);
Signal_average_level=10^(Log_miu_dB/10);
% Freq_band=10^7; %單位Hz,工作帶寬,FDD系統,上下行各10MHz
% Noise_pdf=-174;%噪聲譜密度,單位dBm/Hz
% Noise_dB=Noise_pdf+10*log10(Freq_band);
% Noise_power=10^(Noise_dB/10);
% Noise_power=N0;
% Power_tran=10^(Snr/10)*Noise_power/H_star.^2;
Power_tran=2;
for k=1:Channel_num
? ? H_Rayleigh=(randn(1,Channel_num)+1i*randn(1,Channel_num))/sqrt(2);
? ? H_Lognorm=exp(Signal_average_level+randn(1,Channel_num)*Log_noise_sigma);
? ? H_RayLog(k)=H_Rayleigh(k)*H_Lognorm(k);
? ? K=10^(KdB/10);
? ? H_rician(k)=sqrt(K/(K+1))+sqrt(1/(K+1)).*H_Rayleigh(k);
end
if ?Fade_percentage<=0.5
? ? for k=1:Channel_num
? ? ? ? Signal_addnoi_Lutz(k,:)=sqrt(Power_tran)*H_rician(k)*Signal_offset(k,:);%+sqrt(Noise_power)*sqrt(1/2).*(randn(1,length(Signal_offset(k,:)))+1j*randn(1,length(Signal_offset(k,:))));
% ? ? ? ? Signal_addnoi_rician_power=10*log10(mean(abs(Signal_addnoi_rician(k,:).^2)));
% ? ? ? ? Signal_addno_Lutz(k,:)=awgn(Signal_addnoi_rician(k,:),Snr,Signal_addnoi_rician_power);
? ? end
else
? ? for k=1:Channel_num
? ? ? ? H_RayLog(k)=H_Rayleigh(k)*H_Lognorm(k);
? ? ? ? Signal_addnoi_Lutz(k,:)=sqrt(Power_tran)*H_RayLog(k)*Signal_offset(k,:);%+sqrt(Noise_power).*(randn(1,length(Signal_offset(k,:)))+1j*randn(1,length(Signal_offset(k,:))));
% ? ? ? ? Signal_addnoi_RayLog_power=10*log(mean(abs(Signal_addnoi_RayLog(k,:).^2)));
% ? ? ? ? Signal_addno_Lutz(k,:)=awgn(Signal_addnoi_RayLog(k,:),Snr,Signal_addnoi_RayLog_power);
? ? end
end
Signal_out1=sqrt(10^(-PL_SR/10))*Signal_addnoi_Lutz;
%---------------------------------------------------------------
%鏈路損耗和陰影衰落混合模型
for k=1:Channel_num
? ? H_Rayleigh=(randn(1,Channel_num)+1i*randn(1,Channel_num))/sqrt(2);
? ? K=10^(KdB/10);
? ? H_rician(k)=sqrt(K/(K+1))+sqrt(1/(K+1)).*H_Rayleigh(k);
end
?for k=1:Channel_num
? ? ? ? Signal_addnoi_Lutz2(k,:)=sqrt(Power_tran)*H_rician(k)*Signal_offset(k,:);%+sqrt(Noise_power)*sqrt(1/2).*(randn(1,length(Signal_offset(k,:)))+1j*randn(1,length(Signal_offset(k,:))));
% ? ? ? ? Signal_addnoi_rician_power=10*log10(mean(abs(Signal_addnoi_rician(k,:).^2)));
% ? ? ? ? Signal_addno_Lutz(k,:)=awgn(Signal_addnoi_rician(k,:),Snr,Signal_addnoi_rician_power);
?end
? ?Signal_out2=sqrt(10^(-PL/10))*Signal_addnoi_Lutz2;?
%---------------------------------------------------------------
Tx_data1=Signal_out1;
Tx_data2=Signal_out2;
%----------------------------------------------------------------
%加高斯白噪聲
Error_ber=[];%誤比特率
Error_ber1=[];
Error_ber2=[];%誤比特率
Error_ber3=[];
%Error_ser=[];%誤符號率
for snr_db=-10:snr:N_snr
% ? ? code_power=0;
% ? ? code_power=[norm(Tx_data1)]^2/(length(Tx_data1));%信號的符號功率
% ? ? %bit_power=var(Tx_data);
% ? ? bit_power=code_power/bits_per_symbol;%比特功率?
% ? ? noise_power=10*log10((bit_power/(10^(snr_db/10))));%噪聲功率
% ? ? noise=wgn(1,length(Tx_data1),noise_power,'complex');%產生GAUSS白噪聲信號
% ? ? Y1=Tx_data1+noise;
% ? ? ?code_power=[norm(Tx_data2)]^2/(length(Tx_data2));%信號的符號功率
% ? ? %bit_power=var(Tx_data);
% ? ? bit_power=code_power/bits_per_symbol;%比特功率?
% ? ? noise_power=10*log10((bit_power/(10^(snr_db/10))));%噪聲功率
% ? ? noise=wgn(1,length(Tx_data2),noise_power,'complex');%產生GAUSS白噪聲信號
% ? ? Y2=Tx_data2+noise;
Y1=awgn(Tx_data1,10^(snr_db/10),'measured',1234,'linear');
Y2=awgn(Tx_data2,10^(snr_db/10),'measured',1234,'linear');
%-------------------------------------------------------
%QPSK解調
YY1=Y1;
? ?y_real1=sign(real(YY1));
? ?y_image1=sign(imag(YY1));
? ?y_re1=y_real1./sqrt(2);
? ?y_im1=y_image1./sqrt(2);?
? ?r10=[];
? ?r11=[];
? for k=1:length(y_real1);
? ? ?r10=[r10,[y_real1(k),y_image1(k)]];
? end;
?for k=1:length(y_re1);
? ? ?r11=[r11,[y_re1(k),y_im1(k)]];
?end;
? ? XX1(find(r11>0))=1;
? YY2=Y2;
? ?y_real2=sign(real(YY2));
? ?y_image2=sign(imag(YY2));
? ?y_re2=y_real2./sqrt(2);
? ?y_im2=y_image2./sqrt(2);?
? ?r00=[];
? ?r01=[];
? for k=1:length(y_real2);
? ? ?r00=[r00,[y_real2(k),y_image2(k)]];
? end;
?for k=1:length(y_re2);
? ? ?r01=[r01,[y_re2(k),y_im2(k)]];
?end;
? ? XX(find(r01>0))=1;
? ? %r01 = pskdemod(Y7,M);
%-------------------------------------------------------------
%計算在不同信噪比下的誤比特率并作圖
?dif_bit1=s-r11;?
?dif_bit2=s-r01;?
?ber_snr1=0; ? ?%紀錄誤比特數
? ber_snr2=0;
? ? for k=1:N;
? ? ? ?if dif_bit1(k)~=0;
? ? ? ? ?ber_snr1=ber_snr1+1;
? ? ? ?end
? ?end;
?Error_ber1=[Error_ber1,ber_snr1];
?for k=1:N;
? ? ? ?if dif_bit2(k)~=0;
? ? ? ? ?ber_snr2=ber_snr2+1;
? ? ? ?end
? ?end;
?Error_ber2=[Error_ber2,ber_snr2];
end
BER1=zeros(1,length(0:snr:N_snr));
BER1=Error_ber1./N;
BER2=zeros(1,length(0:snr:N_snr));
BER2=Error_ber2./N;
%-------------------------------------------------------------
?i=-10:snr:N_snr;
semilogy(i,BER1,'-*r');
hold on;
semilogy(i,BER2,'-og');?
hold on;?
grid on;
xlabel('SNR/dB')
ylabel('BER')
legend('Channel_1','Channel_2');
hold off?? ??? ??? ? ??
D112
總結
- 上一篇: FSEDFE
- 下一篇: 近端策略优化深度强化学习算法