clear all clc tic dfree = 10; Nt=4; Nr=500; if dfree == 7 % % Generator is (23,35) K=5 % dfree = 7; C = [4 12 20 72 225 500 1324 3680 8967 22270 57403 142234 348830 867106 2134239 5205290 12724352 31022962 75250693 182320864]; elseif dfree ==10 % Generator is (247,371) K=8 % dfree = 10; C = [2 22 60 148 340 1008 2642 6748 18312 48478 126364 320062 821350 2102864 5335734 13549068 34254388 86441848 217480314 545858054]; elseif dfree ==12 % %% Generator is (1151,1753) K=10 % dfree = 12; C = [2 21 100 186 474 1419 3542 9774 25950 66831 171594 447372 1152976 2938087 7497956 19072552 48400420 122452387 309085546 778801868]; end sgh=1/sqrt(2); SNR=-22:0.5:-17; % SNR=[-10.25 -10:-6]; % snr=10.^(SNR./10); % sgw=sqrt(N*0.5./snr); rate = 0.5; % sgw=sqrt(0.5*N*10.^(-SNR/10)/(rate)); Pb = zeros(1,length(SNR)); for d = dfree:dfree+6 sgw=sqrt(0.5*Nt*10.^(-SNR/10)/(rate*d)); Pe = 0; for k=1:Nr for m=0:Nr-k log_pe = (logfac(Nr+k-2) + logfac(Nr+m-1) + Nr.*log(sgw./(2*sgh))) - ( 2*logfac(Nr-1) + logfac(k-1) + logfac(m) + (Nr+k-1)*log(2) + (Nr+m).* log (1+(sgw./(2*sgh))) ); Pe = Pe + exp(log_pe); % Pe = Pe + (factorial(M+k-2) * gamma(M+m) * (sgw./(2*sgh)).^M) ./ ( gamma(M)^2 * factorial(k-1) * 2^(M+k-1) * factorial(m) * (1+(sgw./(2*sgh))).^(M+m)); end end Pb = Pb + C(1,d-dfree+1).*Pe; end % semilogy(SNR,Pe,'ks-'); % hold on semilogy(SNR,Pb,'bo-'); grid on hold on toc