Cm_sm41.m
上传用户:loeagle
上传日期:2013-03-02
资源大小:1236k
文件大小:1k
源码类别:

通讯编程文档

开发平台:

Matlab

  1. function [p]=cm_sm41(snr_in_dB)
  2. % [p]=cm_sm41(snr_in_dB)
  3. % CM_SM41  finds the probability of error for the given
  4. %    value of snr_in_dB, SNR in dB.
  5. N=10000;
  6. d=1;    % min. distance between symbols
  7. Eav=10*d^2;      % energy per symbol
  8. snr=10^(snr_in_dB/10);      % SNR per bit (given)
  9. sgma=sqrt(Eav/(8*snr));       % noise variance
  10. M=16;
  11. % Generation of the data source follows.
  12. for i=1:N,
  13.   temp=rand;    % a uniform R.V. between 0 and 1
  14.   dsource(i)=1+floor(M*temp);    % a number between 1 and 16, uniform 
  15. end;
  16. % Mapping to the signal constellation follows.
  17. mapping=[-3*d 3*d;
  18.    -d  3*d;
  19.             d  3*d;
  20.   3*d  3*d;
  21.  -3*d  d;
  22.    -d  d;
  23.     d  d;
  24.   3*d  d;
  25.    -3*d  -d; 
  26.    -d  -d; 
  27.     d  -d;
  28.           3*d  -d;
  29.  -3*d  -3*d;
  30.    -d  -3*d;
  31.     d  -3*d;
  32.   3*d  -3*d];
  33. for i=1:N,
  34.   qam_sig(i,:)=mapping(dsource(i),:);
  35. end;
  36. % received signal
  37. for i=1:N,
  38.   [n(1) n(2)]=gngauss(sgma);
  39.   r(i,:)=qam_sig(i,:)+n;
  40. end;
  41. % detection and error probability calculation
  42. numoferr=0;
  43. for i=1:N,
  44.   % Metric computation follows.
  45.   for j=1:M,
  46.     metrics(j)=(r(i,1)-mapping(j,1))^2+(r(i,2)-mapping(j,2))^2;
  47.   end;
  48.   [min_metric decis] = min(metrics);
  49.   if (decis~=dsource(i)),
  50.     numoferr=numoferr+1;
  51.   end;
  52. end;
  53. p=numoferr/(N);