pd_swerling1.m
上传用户:szahd2008
上传日期:2020-09-25
资源大小:1275k
文件大小:1k
源码类别:

传真(Fax)编程

开发平台:

Matlab

  1. function pd = pd_swerling1 (nfa, np, snrbar)
  2. % This function is used to calculate the probability of detection
  3. % for Swerling 1 targets.
  4. format long
  5. snrbar = 10.0^(snrbar/10.);
  6. eps = 0.00000001;
  7. delmax = .00001;
  8. delta =10000.;
  9. % Calculate the threshold Vt
  10. pfa =  np * log(2) / nfa;
  11. sqrtpfa = sqrt(-log10(pfa));
  12. sqrtnp = sqrt(np); 
  13. vt0 = np - sqrtnp + 2.3 * sqrtpfa * (sqrtpfa + sqrtnp - 1.0);
  14. vt = vt0;
  15. while (abs(delta) >= vt0)
  16.    igf = incomplete_gamma(vt0,np);
  17.    num = 0.5^(np/nfa) - igf;
  18.    temp = (np-1) * log(vt0+eps) - vt0 - factor(np-1);
  19.    deno = exp(temp);
  20.    vt = vt0 + (num / (deno+eps));
  21.    delta = abs(vt - vt0) * 10000.0; 
  22.    vt0 = vt;
  23. end
  24. if (np == 1)
  25.    temp = -vt / (1.0 + snrbar);
  26.    pd = exp(temp);
  27.    return
  28. end
  29.    temp1 = 1.0 + np * snrbar;
  30.    temp2 = 1.0 / (np *snrbar);
  31.    temp = 1.0 + temp2;
  32.    val1 = temp^(np-1.);
  33.    igf1 = incomplete_gamma(vt,np-1);
  34.    igf2 = incomplete_gamma(vt/temp,np-1);
  35.    pd = 1.0 - igf1 + val1 * igf2 * exp(-vt/temp1);
  36.    return