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)检测性能的变化')