📄 vblast_test.m
字号:
clear all;clc;%% initializationNt=2;Nr=2;M=4;tx_bits=randint(15000,1);%% modulationlayered_bits=reshape(tx_bits,Nt,[]);layered_sym=zeros(Nt,length(layered_bits)/log2(M));for n=1:Nt temp=bi2de(reshape(layered_bits(n,:),log2(M),[]).','left-msb'); layered_sym(n,:)=qammod(temp,M).';endsym_length=length(layered_sym);P_mean=mean(abs(qammod((0:M-1),M)).^2);%% transmitH=(randn(Nr,Nt,sym_length)+j*randn(Nr,Nt,sym_length))/sqrt(2);EbNo=0:10:30;ber=zeros(size(EbNo));rec_sig=zeros(Nr,sym_length);for n=1:sym_length rec_sig(:,n)=H(:,:,n)*layered_sym(:,n);endSNR=EbNo+10*log10(log2(M));%% AWGNfor rr=1:length(SNR)sigma=sqrt(0.5*P_mean/(Nt*10^(SNR(rr)/10)));awgn_sig=rec_sig+sigma*(randn(size(rec_sig))+j*randn(size(rec_sig)));decoded_sym=zeros(size(layered_sym));%% Successive Interference Cancellationfor n=1:sym_length H_save=reshape(H(:,:,n),Nr,Nt); H_temp=H_save; r=awgn_sig(:,n); G=pinv(H_save); [g0 k]=min(sum(abs(G).^2,2)); for ii=1:Nt % k must be stored!!! kk(ii)=k; w=G(k,:); y=w*r; decoded_sym(k,n)=y; r=r-y*H_save(:,k); H_temp(:,k)=zeros(Nr,1); G=pinv(H_temp); for ki=1:ii G(kk(ki),:)=inf; end [g0 k]=min(sum(abs(G).^2,2)); endend%% de-qammodrec_layered_num=qamdemod(decoded_sym,M);rec_layered_bits=zeros(size(layered_bits));for n=1:Nt rec_layered_bits(n,:)=reshape(de2bi(rec_layered_num(n,:).',log2(M),'left-msb').',1,[]).';endrx_bits=reshape(rec_layered_bits,1,[]).';[num_err ber(rr)]=biterr(rx_bits,tx_bits);end%% plotsemilogy(EbNo,ber,'r-o');xlabel('Eb/No');ylabel('Bit Error Rate');title('VBLAST');grid on;hold on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -