⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 r.m

📁 自适应波束形成(智能天线)的MATLAB代码仿真程序
💻 M
字号:
%  function [ber ]=cdma_sim(N,SF,EbNo,NumInterferers,MPathDelay)
 N=2000;
 SF=31;
 EbNo=6;
 NumInterferers=2;
 MPathDelay=[1 2 3];
% Kfactor_dB=4;
rand('state',sum(100*clock)); randn('state',sum(100*clock));
NIterate = 1000;										% default block size
NumberOfIterations = ceil(N/NIterate);
% ErrorState = 0; ErrorRun = []; RunCount = 1;        % itialize
EbNolinear=10^(EbNo/10);
error=0;

DesiredSequence = MSequence(SF+1);          % desired signal
offset = fix(length(DesiredSequence)/(NumInterferers+1));
M = length(DesiredSequence);
for k=1:NumInterferers
   InterfererSequence(k,:)=[DesiredSequence(M-(k-1)*offset:M) DesiredSequence(1:M-1-(k-1)*offset)];
end

for cnt=1:NumberOfIterations

   % Generate symbols for dsired and interfering users and spread.
   DesiredSymbols = sign(rand(1,NIterate)-0.5);
   InterferingSymbols = sign(rand(NumInterferers,NIterate)-0.5);
   DesiredChips = reshape(DesiredSequence.'*DesiredSymbols,1,M*NIterate);
   for k=1:NumInterferers
      InterferingChips(k,:) =reshape(InterfererSequence(k,:).'*InterferingSymbols (k,:),1,M*NIterate);
   end
   
   % Generate noise.
   NoiseAmp=sqrt(SF/(2*EbNolinear));
   MaxDelay = max(MPathDelay);
   MPathComponents = length(MPathDelay);
   DesiredNoise = NoiseAmp*randn(MPathComponents,M*NIterate+MaxDelay);
   
   % Apply multipath.
   
   DesiredMPathSignal_1= zeros(1,M*NIterate+MaxDelay);
   DesiredMPathSignal_2= zeros(1,M*NIterate+MaxDelay);
   DesiredMPathSignal_3= zeros(1,M*NIterate+MaxDelay); 
   DesiredMPathSignal_4= zeros(1,M*NIterate+MaxDelay);
   
   %期望用户信号的初始角度
   %  angle_1=randint(1,MPathComponents,30)/180*pi;      %相对用户速度方向的发射信号离开角度,要求均匀分布于[0:2*pi]
   %  angle_2=randint(1,MPathComponents,11)/180*pi;      %随机相位均匀分布于[0:2*pi]
   desire_angle=randint(1,MPathComponents,65)/180*pi;          % 期望用户的中心到达角
   
 
   
   %干扰用户信号的初始家角度
  %  angle_inter1_a=pi*randint(NumInterferers,MPathComponents,30)/180;    %相对用户速度方向的发射信号离开角度,要求均匀分布于[0:2*pi]
  %  angle_inter2_b=pi*randint(NumInterferers,MPathComponents,11)/180;    %随机相位均匀分布于[0:2*pi]
    interfer_angle=pi*randint(NumInterferers,MPathComponents,65)/180;  %interfer_angle各干扰信号在不同多径中的入射角
  
  %对于干扰信号的多径衰落计算
   InterferingMPathSignall_1=zeros(NumInterferers,M*NIterate+MaxDelay);
   InterferingMPathSignall_2=zeros(NumInterferers,M*NIterate+MaxDelay);
   InterferingMPathSignall_3=zeros(NumInterferers,M*NIterate+MaxDelay);
   InterferingMPathSignall_4=zeros(NumInterferers,M*NIterate+MaxDelay);
   
   aaa=randn(NumInterferers+1,MaxDelay).^2;
   bbb=randn(NumInterferers+1,MaxDelay).^2;
   ro=sqrt(aaa+bbb);
  
   % ro=kron(raylrnd(1/sqrt(2),1,NIterate),ones(1,M)); %ro衰落系数
   j=sqrt(-1);
   angle=randint(NumInterferers+1,MPathComponents,10)/180*pi;  %随机相位

      for i=1:MPathComponents
          aa=MPathDelay(i);
          
           for k=1:NumInterferers
          %  fadings(aa,:)=exp((2*pi*(60/180*pi*cos(angle_inter1_a(k,i))+angle_inter2_b(k,i)))*j)*ro; 
            fadings(aa,:)=exp(angle(k,i)*j)*ro(k,i); 
            index=1+aa:aa+M*NIterate;
          InterferingMPathSignall_1(k,index) = ...
             InterferingMPathSignall_1(k,index) + fadings(aa,:).*InterferingChips(k,:).*exp(-j*0);
                                         %天线阵1上接收的干扰信号
          InterferingMPathSignall_2(k,index) = ...
             InterferingMPathSignall_2(k,index) + fadings(aa,:).*InterferingChips(k,:).*exp(-j*(pi*sin(interfer_angle(k,i))));
                                         %天线阵2上接收的干扰信号
          InterferingMPathSignall_3(k,index) = ...
             InterferingMPathSignall_3(k,index) + fadings(aa,:).*InterferingChips(k,:).*exp(-j*(pi*2*sin(interfer_angle(k,i))));
                                         %天线阵3上接收的干扰信号
          InterferingMPathSignall_4(k,index) = ...
             InterferingMPathSignall_4(k,index) + fadings(aa,:).*InterferingChips(k,:).*exp(-j*(pi*3*sin(interfer_angle(k,i))));
                                         %天线阵4上接收的干扰信号
           end   
       InterferingMPathSignal_1(i,:)=sum(InterferingMPathSignall_1,1);  
       InterferingMPathSignal_2(i,:)=sum(InterferingMPathSignall_2,1);  
       InterferingMPathSignal_3(i,:)=sum(InterferingMPathSignall_3,1);  
       InterferingMPathSignal_4(i,:)=sum(InterferingMPathSignall_4,1);  
   end  
   
              
  %针对期望信号,计算多径衰落   
  for i=1:MPathComponents
     aa=MPathDelay(i);
     fading(aa,:)=exp(angle(end)*j)*ro(end,i); 
     index=1+aa:aa+M*NIterate;
     DesiredMPathSignal_1(i,index) =DesiredMPathSignal_1(index)+fading(aa,:).*DesiredChips.*exp(-j*0);
                                                        %天线阵元1上接收到的期望信号
     DesiredMPathSignal_2(i,index) =DesiredMPathSignal_2(index)+fading(aa,:).*DesiredChips.*exp(-j*(pi*sin(desire_angle(i))));
                                                        %天线阵元2上接收到的期望信号
     DesiredMPathSignal_3(i,index) =DesiredMPathSignal_3(index)+fading(aa,:).*DesiredChips.*exp(-j*(pi*2*sin(desire_angle(i))));
                                                        %天线阵元3上接收到的期望信号
     DesiredMPathSignal_4(i,index) =DesiredMPathSignal_4(index)+fading(aa,:).*DesiredChips.*exp(-j*(pi*3*sin(desire_angle(i))));
                                                        %天线阵元4上接收到的期望信号
  end   
  
  
   % Add intererence and noise.以天线阵元为单位,存放在阵元i上的各个多径上的信号总和
  IncomingSignal_1 =DesiredMPathSignal_1 + InterferingMPathSignal_1 + DesiredNoise;
  IncomingSignal_2 =DesiredMPathSignal_2 + InterferingMPathSignal_2 + DesiredNoise;
  IncomingSignal_3 =DesiredMPathSignal_3 + InterferingMPathSignal_3 + DesiredNoise;
  IncomingSignal_4 =DesiredMPathSignal_4 + InterferingMPathSignal_4 + DesiredNoise;
        
  % 未解扩的信号,直接有在天线上采样后再进行一次子采样,
    
  for i=1:MPathComponents
   aa=MPathDelay(i);
   x_1=reshape(IncomingSignal_1(i,aa+1:aa+M*NIterate),M,NIterate);
   IncomingSignal__1(i,:)=x_1(end,:); 
   x_2=reshape(IncomingSignal_2(i,aa+1:aa+M*NIterate),M,NIterate);
   IncomingSignal__2(i,:)=x_2(end,:); 
   x_3=reshape(IncomingSignal_3(i,aa+1:aa+M*NIterate),M,NIterate);
   IncomingSignal__3(i,:)=x_3(end,:); 
   x_4=reshape(IncomingSignal_4(i,aa+1:aa+M*NIterate),M,NIterate);       
   IncomingSignal__4(i,:)=x_4(end,:); 
 end
 
  
  
  %  解扩信号,以阵元为单位,每行代表一条路径,用匹配滤波器解扩
 
 DespreadSymbols_1 = zeros(MPathComponents,M*NIterate);
 DespreadSymbols_2 = zeros(MPathComponents,M*NIterate);
 DespreadSymbols_3 = zeros(MPathComponents,M*NIterate);
 DespreadSymbols_4 = zeros(MPathComponents,M*NIterate);
 
  for i=1:MPathComponents
   aa=MPathDelay(i);
   DespreadSymbols_1(i,:)=IncomingSignal_1(i,aa+1:aa+M*NIterate).*reshape((DesiredSequence'*ones(1,NIterate)),1,M*NIterate);
   DespreadSymbols_2(i,:)=IncomingSignal_1(i,aa+1:aa+M*NIterate).*reshape((DesiredSequence'*ones(1,NIterate)),1,M*NIterate);
   DespreadSymbols_3(i,:)=IncomingSignal_1(i,aa+1:aa+M*NIterate).*reshape((DesiredSequence'*ones(1,NIterate)),1,M*NIterate);
   DespreadSymbols_4(i,:)=IncomingSignal_1(i,aa+1:aa+M*NIterate).*reshape((DesiredSequence'*ones(1,NIterate)),1,M*NIterate);
  
  DespreadSymbols__1(i,:)=1/sqrt(SF+1).*sum((reshape(DespreadSymbols_1(i,:),M,NIterate)),1);
  DespreadSymbols__2(i,:)=1/sqrt(SF+1).*sum((reshape(DespreadSymbols_2(i,:),M,NIterate)),1);
  DespreadSymbols__3(i,:)=1/sqrt(SF+1).*sum((reshape(DespreadSymbols_3(i,:),M,NIterate)),1);
  DespreadSymbols__4(i,:)=1/sqrt(SF+1).*sum((reshape(DespreadSymbols_4(i,:),M,NIterate)),1);
  end 
  
  for i=1:MPathComponents
      Y=[DespreadSymbols__1(i,:);DespreadSymbols__2(i,:);DespreadSymbols__3(i,:);DespreadSymbols__4(i,:)];
      X=[IncomingSignal__1(i,:);IncomingSignal__2(i,:);IncomingSignal__3(i,:);IncomingSignal__4(i,:)];
      R=beanforing_RSL(X,Y);
      Z(i,:)=R;
  end
 
  % new=zeros(1,length(Y));
 %  new=sum(Z,1);  %加权系数后的多径合并
  new_real=real(sum(Z,1));
  new_imag=imag(sum(Z,1));
  signal=sign(new_real.*new_imag); 
  clear Z
  clear new_Z
  
  
 %差错率计算
 
% for index=1:length(Y)
      for index=1:360
 error=0.5*abs(signal(index)-DesiredSymbols(index))+error;
 end 
 ber(cnt)=error/(cnt*NIterate);  
 % db(cnt)=10*lg(error/(cnt*NIterate)); 
end
 

  
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -