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

传真(Fax)编程

开发平台:

Matlab

  1. function pd = pd_swerling5 (input1, indicator, np, snrbar)
  2. % This function is used to calculate the probability of detection
  3. % for Swerling 5 or 0 targets for np>1.
  4. if(np == 1)
  5.    'Stop, np must be greater than 1'
  6.    return
  7. end
  8. format long
  9. snrbar = 10.0.^(snrbar./10.);
  10. eps = 0.00000001;
  11. delmax = .00001;
  12. delta =10000.;
  13. % Calculate the threshold Vt
  14. if (indicator ~=1)
  15.    nfa = input1;
  16.    pfa =  np * log(2) / nfa;
  17. else
  18.    pfa = input1;
  19.    nfa = np * log(2) / pfa;
  20. end
  21. sqrtpfa = sqrt(-log10(pfa));
  22. sqrtnp = sqrt(np); 
  23. vt0 = np - sqrtnp + 2.3 * sqrtpfa * (sqrtpfa + sqrtnp - 1.0);
  24. vt = vt0;
  25. while (abs(delta) >= vt0)
  26.    igf = incomplete_gamma(vt0,np);
  27.    num = 0.5^(np/nfa) - igf;
  28.    temp = (np-1) * log(vt0+eps) - vt0 - factor(np-1);
  29.    deno = exp(temp);
  30.    vt = vt0 + (num / (deno+eps));
  31.    delta = abs(vt - vt0) * 10000.0; 
  32.    vt0 = vt;
  33. end
  34. % Calculate the Gram-Chrlier coeffcients
  35. temp1 = 2.0 .* snrbar + 1.0;
  36. omegabar = sqrt(np .* temp1);
  37. c3 = -(snrbar + 1.0 / 3.0) ./ (sqrt(np) .* temp1.^1.5);
  38. c4 = (snrbar + 0.25) ./ (np .* temp1.^2.);
  39. c6 = c3 .* c3 ./2.0;
  40. V = (vt - np .* (1.0 + snrbar)) ./ omegabar;
  41. Vsqr = V .*V;
  42. val1 = exp(-Vsqr ./ 2.0) ./ sqrt( 2.0 * pi);
  43. val2 = c3 .* (V.^2 -1.0) + c4 .* V .* (3.0 - V.^2) -...
  44.    c6 .* V .* (V.^4 - 10. .* V.^2 + 15.0);
  45. q = 0.5 .* erfc (V./sqrt(2.0));
  46. pd =  q - val1 .* val2;
  47. return