www.gusucode.com > ZBLAST算法仿真源码程序 > ZBLAST算法仿真源码程序/131014135Pro/vblastpic7.m

    % vblastpic7:接收天线随发射天线变化时,ZF检测性能的变化
% tx=1,rx=1================================================================
tx=1;rx=1;L=20000;
Modulation='BPSK';
%EbN0=[0:1:20];
%B=30000;Ts=1/24300;
%SNR=EbN0-10*log10(Ts*B);
SNR=[0:2:20];
A=randint(tx*L,1);
X=zeros(tx,L);
for k=1:tx
X(k,:)=(-1).^(A(k:tx:end)+1);
end
H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));
n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));
R=zeros(rx,L);
for k=1:L
    R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);
end
tic,berz1=[];
  for m=SNR
      m
      snr=10^(m/10);
      R_noised=R+sqrt(1/snr)*n;
      x=[];
      a=zeros(tx*L,1);
      for t=1:L
          r=R_noised(:,t);
          G=pinv(H(:,:,t));
          y=G*r;
          xtemp=(y>=0)-(y<0)+0;
          x=[x,xtemp];
      end
      for k=1:tx
          a(k:tx:end)=(x(k:tx:end)+1)/2;
      end
      [errbit,temp_ber]=biterr(A,a);
      berz1=[berz1,temp_ber];
  end
  toc
  figure
  semilogy(SNR,berz1,'+- b')
% tx=2,rx=2================================================================
tx=2;rx=2;
Modulation='BPSK';
SNR=[0:2:20]
A=randint(tx*L,1);
X=zeros(tx,L);
for k=1:tx
X(k,:)=(-1).^(A(k:tx:end)+1);
end
H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));
n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));
R=zeros(rx,L);
for k=1:L
    R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);
end
tic,berz2=[];
  for m=SNR
      m
      snr=10^(m/10);
      R_noised=R+sqrt(1/snr)*n;
      x=[];
      a=zeros(tx*L,1);
      for t=1:L
          r=R_noised(:,t);
          HH=H(:,:,t);
          G=pinv(HH);
          xtemp=zeros(tx,1);
          y=G*r;
          xtemp=(y>=0)-(y<0)+0;
          x=[x,xtemp];
      end
      for k=1:tx
          a(k:tx:end)=(x(k:tx:end)+1)/2;
      end
      [errbit,temp_ber]=biterr(A,a);
      berz2=[berz2,temp_ber];
  end
  toc
  hold on
  semilogy(SNR,berz2,'*- g')
% tx=3,rx=3================================================================
tx=3;rx=3;
A=randint(tx*L,1);
X=zeros(tx,L);
for k=1:tx
X(k,:)=(-1).^(A(k:tx:end)+1);
end
H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));
n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));
R=zeros(rx,L);
for k=1:L
    R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);
end
tic,berz3=[];
  for m=SNR
      m
      snr=10^(m/10);
      R_noised=R+sqrt(1/snr)*n;
      x=[];
      a=zeros(tx*L,1);
      for t=1:L
          r=R_noised(:,t);
          HH=H(:,:,t);
          G=pinv(HH);
          xtemp=zeros(tx,1);
          y=G*r;
          xtemp=(y>=0)-(y<0)+0;
          x=[x,xtemp];
      end
      for k=1:tx
          a(k:tx:end)=(x(k:tx:end)+1)/2;
      end
      [errbit,temp_ber]=biterr(A,a);
      berz3=[berz3,temp_ber];
  end
  toc
  hold on
  semilogy(SNR,berz3,'o- r')
% tx=4,rx=4================================================================
tx=4;rx=4;
A=randint(tx*L,1);
X=zeros(tx,L);
for k=1:tx
X(k,:)=(-1).^(A(k:tx:end)+1);
end
H=sqrt(1/2)*(randn(rx,tx,L)+i*randn(rx,tx,L));
n=sqrt(1/2)*(randn(rx,L)+i*randn(rx,L));
R=zeros(rx,L);
for k=1:L
    R(:,k)=sqrt(1/tx)*H(:,:,k)*X(:,k);
end
tic,berz4=[];
  for m=SNR
      m
      snr=10^(m/10);
      R_noised=R+sqrt(1/snr)*n;
      x=[];
      a=zeros(tx*L,1);
      for t=1:L
          r=R_noised(:,t);
          HH=H(:,:,t);
          G=pinv(HH);
          xtemp=zeros(tx,1);
          y=G*r;
          xtemp=(y>=0)-(y<0)+0;
          x=[x,xtemp];
      end
      for k=1:tx
          a(k:tx:end)=(x(k:tx:end)+1)/2;
      end
      [errbit,temp_ber]=biterr(A,a);
      berz4=[berz4,temp_ber];
  end
  toc
  hold on
  semilogy(SNR,berz4,'s- m'),grid on
  % Figure=================================================================
  legend('tx=1,rx=1','tx=2,rx=2','tx=3,rx=3','tx=4,rx=4');
  xlabel('SNR(dB)');
  ylabel('误比特率');
  title('接收天线随发射天线变化时,ZF-SIC(unordered)检测性能的变化')