⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cm_sm32.m

📁 contemporarycommunicatonsystem-using MATLAB经典书目源程序!
💻 M
字号:
function [pb,ps]=cm_sm32(snr_in_dB)% [pb,ps]=cm_sm32(snr_in_dB)%		CM_SM32  finds the probability of bit error and symbol error for the %   		given value of snr_in_dB, signal to noise ratio in dB.N=10000;E=1;				  	% energy per symbolsnr=10^(snr_in_dB/10);	 	  	% signal to noise ratiosgma=sqrt(E/snr)/2;	  	  	% noise variance% the signal mappings00=[1 0];s01=[0 1];s11=[-1 0];s10=[0 -1];% generation of the data sourcefor i=1:N,	  temp=rand;			  	% a uniform random variable between 0 and 1  if (temp<0.25),		  	% with probability 1/4, source output is "00"    dsource1(i)=0;    dsource2(i)=0;		     elseif (temp<0.5),		  	% with probability 1/4, source output is "01"    dsource1(i)=0;    dsource2(i)=1;  elseif (temp<0.75),	 	  	% with probability 1/4, source output is "10"    dsource1(i)=1;	    dsource2(i)=0;  else			          	% with probability 1/4, source output is "11"    dsource1(i)=1;    dsource2(i)=1;  end;end;% detection and the probability of error calculationnumofsymbolerror=0;numofbiterror=0;for i=1:N,  % the received signal at the detector, for the ith symbol, is:  n(1)=gngauss(sgma);	  	    n(2)=gngauss(sgma);  if ((dsource1(i)==0) & (dsource2(i)==0)),    r=s00+n;  elseif ((dsource1(i)==0) & (dsource2(i)==1)),    r=s01+n;  elseif ((dsource1(i)==1) & (dsource2(i)==0)),    r=s10+n;  else    r=s11+n;  end;  % The correlation metrics are computed below  c00=dot(r,s00);  c01=dot(r,s01);  c10=dot(r,s10);  c11=dot(r,s11);  % The decision on the ith symbol is made next  c_max=max([c00 c01 c10 c11]);  if (c00==c_max),    decis1=0; decis2=0;  elseif (c01==c_max),    decis1=0; decis2=1;  elseif (c10==c_max),    decis1=1; decis2=0;  else    decis1=1; decis2=1;  end;  % increment the error counter, if the decision is not correct  symbolerror=0;  if (decis1~=dsource1(i)),    numofbiterror=numofbiterror+1;    symbolerror=1;  end;  if (decis2~=dsource2(i)),    numofbiterror=numofbiterror+1;    symbolerror=1;  end;  if (symbolerror==1),    numofsymbolerror = numofsymbolerror+1;  end;end;ps=numofsymbolerror/N;	          	% since there are totally N symbolspb=numofbiterror/(2*N);    	  	% since 2N bits are transmitted

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -