📄 mimo_awgn.m
字号:
function BER_total_AWGN=mimo_AWGN(name)N_channel=3;n=5000;SNR=[0:10];blocks_min=1000;blocks_max=2000;BER_total_AWGN=[];g_rsc1=[1 1 1;1 0 1];g_rsc2=[1 1 1;1 0 1];g_rsc3=[1 1 1;1 0 1];[st_t1_1,out_t1_1,ST1_1]=rsc_table(g_rsc1); [st_t1_2,out_t1_2,ST1_2]=rsc_table(g_rsc2); [st_t1_3,out_t1_3,ST1_3]=rsc_table(g_rsc3); mem1=size(g_rsc1,2)-1;m1=size(st_t1_1,1);[interleaving,dummy]=make_interleaver(2*(n+mem1),'ttcmrandom');for ind=1:length(SNR) EbN0=SNR(ind); EsN0=EbN0+10*log10(1/2); errors_1_AWGN=0; errors_2_AWGN=0; errors_3_AWGN=0; errors_total_AWGN=0; again=0; while(again<blocks_min)|((min(errors_total_AWGN)<10000)&(again<blocks_max)) again=again+1; info=round(rand(N_channel,n)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %outer encoding %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% output1_bin=zeros(N_channel,2*(n+mem1)); [output1_bin(1,:),state1_int_1]=rsc_encoding(g_rsc1,st_t1_1,out_t1_1,info(1,:)); [output1_bin(2,:),state1_int_2]=rsc_encoding(g_rsc2,st_t1_2,out_t1_2,info(2,:)); [output1_bin(3,:),state1_int_3]=rsc_encoding(g_rsc3,st_t1_3,out_t1_3,info(3,:)); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %interleaving %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% output1_bin=output1_bin(:,interleaving); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % to generate received signals %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% sigmaq=1/(2*10^(EsN0/10)); sigma=sqrt(sigmaq); Noise=sigma*randn(N_channel,size(output1_bin,2)); output_1_AWGN=AWGN_decoding(output1_bin(1,:),Noise(1,:),interleaving,sigmaq,st_t1_1,mem1,ST1_1); errors_1_AWGN=errors_1_AWGN+length(find(output_1_AWGN~=info(1,:))); output_2_AWGN=AWGN_decoding(output1_bin(2,:),Noise(2,:),interleaving,sigmaq,st_t1_2,mem1,ST1_2); errors_2_AWGN=errors_2_AWGN+length(find(output_2_AWGN~=info(2,:))); output_3_AWGN=AWGN_decoding(output1_bin(3,:),Noise(3,:),interleaving,sigmaq,st_t1_3,mem1,ST1_3); errors_3_AWGN=errors_3_AWGN+length(find(output_3_AWGN~=info(3,:))); errors_total_AWGN=errors_1_AWGN+errors_2_AWGN+errors_3_AWGN; fprintf('Eb/N0: %f dB \t errors_total_AWGN: %d \t block #: %d \t \n',EbN0,errors_total_AWGN,again); end%end of blocks BER_total_AWGN=[BER_total_AWGN,[EbN0;errors_total_AWGN/(N_channel*n*again)]]; save (name,'BER_total_AWGN');end%end of SNRs
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -