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

おすすめ

転載: blog.csdn.net/ccsss22/article/details/119959292