fork download
  1. #include<iostream>
  2. #include<math.h>
  3. using namespace std;
  4. int main()
  5. {
  6. double y[]={0.1,0.01,0.9,0.40,0.30,0.70,0.12,0.21,0.23,0.43};
  7. int ylen=sizeof(y)/sizeof(*y);
  8. int num_train=6;
  9. int num_guard=2;
  10. double Pfa=1e-3;
  11. int train_half = num_train / 2;
  12. int guard_half = num_guard / 2;
  13. double alpha =num_train*(pow(Pfa,(-1/num_train))-1);
  14. int CUT;
  15. int start1,stop1,start2,stop2;
  16. int N1,N2;
  17. double sum1,sum2;
  18. double p_noise,threshold;
  19. for (int i=0;i<ylen;i++)
  20. {
  21. CUT=i;
  22. start1=i+guard_half+1; //for right side of CUT
  23. stop1=start1+train_half-1; //for right side of CUT
  24. start2=i-guard_half-1; //for left side of CUT
  25. stop2=start2-train_half+1; //for left side of CUT
  26. //cout<<start1<<endl;
  27. if(start1>=ylen)
  28. {
  29. sum1=0;
  30. for (int ii=stop2;ii<start2;ii++)
  31. sum2+=y[ii];
  32. N1=0;
  33. //cout<<sum2<<endl;
  34.  
  35. }
  36. else if(start2<=0)
  37. {
  38. sum2=0;
  39. for (int ii=start1;ii<stop1;ii++)
  40. sum1+=y[ii];
  41. N1=stop1-start1+1;
  42. N2=0;
  43. }
  44. else
  45. {
  46. if(stop1>=ylen)
  47. stop1=ylen;
  48. if(stop2<=0)
  49. stop2=1;
  50. for(int ii=start1;ii<stop1;ii++)
  51. sum1+=y[ii];
  52. for(int ii=stop2;ii<start2;ii++)
  53. sum2+=y[ii];
  54. N1=stop1-start1+1;
  55. N2=start2-stop2+1;
  56. }
  57.  
  58. p_noise=(sum1+sum2)/(N1+N2);
  59. cout<<p_noise<<endl;
  60. threshold = alpha * p_noise;
  61. }
  62.  
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0s 3468KB
stdin
Standard input is empty
stdout
nan
nan
nan
nan
nan
nan
nan
nan
1.30667
1.58