📄 plotconprob.m
字号:
% plot the bounds on performance for a convolutianal code.% use T(D,N) = D^5 N/(1-2DN), so T(D) = D^5/(1-2D)% dTdN = D^5/(1-2DN)^2 so dTdN_N=1 = D^5/(1-2D)^2% for a R=1/2 code with dfree = 5;% Copyright 2004 by Todd K. Moon% Permission is granted to use this program/data% for educational/research only% describe the codek = 1;n = 2;R = k/n;dfree = 5;anfree = 1; % number of paths of this lengthNfree = 1; % number of nonzero input bits on shortest path% plot rangeEbN0dB = 4:16;% Initialize the plot arraysuncoded = []; % uncoded performancePehard = []; % node error for hard decodingPbhard = []; % bit error for hard decodingPbhardlower = []; % lower bound for hard decodingPesoft1 = []; % node error for soft decoding, bound 1Pesoft2 = []; % node error for soft decoding, bound 2Pbsoft1 = []; % bit error for soft decoding, bound 1Pbsoft2 = []; % bit error for soft decoding,bound 2Pbsoftlower = []; % lower bound for soft decoding for e = EbN0dB; % loop over each SNR EbN0 = 10^(e/10); % convert back from dB uncoded = [uncoded qf(sqrt(2*EbN0))]; EcN0 = R*EbN0; pc = qf(sqrt(2*EcN0)); % determine equivalent BSC crossover probability % Hard decision upper bounds Z = sqrt(4*pc*(1-pc)); Pehard = [Pehard (Z^5/(1-2*Z))]; Pbhard = [Pbhard ((Z^5)/(1-2*Z)^2)/k]; % compute Pdfree if(mod(dfree,2) == 0) % even dfree Pdfree = 0.5*nchoosek(dfree,dfree/2)*pc^(dfree/2)*(1-pc)^(dfree/2); for k1=dfree/2+1:dfree Pdfree = Pdfree + nchoosek(dfree,k1)*pc^k1*(1-pc)^(dfree-k); end else % odd dfree Pdfree = 0; for k1=(dfree+1)/2:dfree Pdfree = Pdfree + nchoosek(dfree,k1)*pc^k1*(1-pc)^(dfree-k); end end % Hard decision lower bound Pbhardlower = [Pbhardlower Nfree*anfree*Pdfree/k]; % soft decision upper bounds Z = exp(-EcN0); Pesoft1 = [Pesoft1 0.5*(Z^5/(1-2*Z))]; Pesoft2 = [Pesoft2 exp(dfree*EcN0)*qf(sqrt(2*dfree*EcN0))*(Z^5)/(1-2*Z)]; Pbsoft1 = [Pbsoft1 (0.5*Z^5/(1-2*Z)^2)/k]; Pbsoft2 = [Pbsoft2 (exp(dfree*EcN0)*qf(sqrt(2*dfree*EcN0))*Z^5/(1-2*Z)^2)/k]; % Soft decision lower bounds Pbsoftlower = [Pbsoftlower Nfree*anfree*qf(sqrt(2*dfree*EcN0))/k];endclfsemilogy(EbN0dB,uncoded);hold on;semilogy(EbN0dB,Pbhard,'--');xlabel('E_b/N_0 (dB)');ylabel('Probability of bit error (bound)');semilogy(EbN0dB,Pbhardlower,'--');semilogy(EbN0dB,Pbsoft2,':');semilogy(EbN0dB,Pbsoft1,'r:');semilogy(EbN0dB,Pbsoftlower,':');legend('Uncoded','Hard decision bounds', 'Soft decision bounds');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -