Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.72 KB | None | 0 0
  1.  
  2.     private double[] data;
  3.     private boolean[] neg;
  4.     //private double[] tmpData = null;
  5.     int quantitation, frequenzy;
  6.  
  7.     public SpectrumAnalysis(int Quantitation, int Frequenzy, int accuracyMS, float distancePercent, double[] Data , byte toleranceFactor){
  8.         System.out.println(" length: " + Data.length);
  9.         assert(distancePercent > 0 && distancePercent < 100);
  10.         frequenzy = Frequenzy; quantitation = Quantitation;
  11.         data = new double[Data.length];
  12.         neg = new boolean[Data.length];
  13.         double distanceAbs = ((1 << Quantitation) / (100 / distancePercent));
  14.         System.out.println(distanceAbs);
  15.         float frequenzyMS = Frequenzy/1000f;
  16.         //int length = data.length / frequenzyMS;
  17.         //wipe out negative values before analyzing
  18.         //safing the negatives to revert this when give back to user
  19.         for(int i = 0; i < data.length;i++){
  20.             if(Data[i] < 0) {
  21.                 data[i] = (byte)-Data[i];
  22.                 neg[i] = true;
  23.             } else{
  24.                 data[i] = Data[i];
  25.                 neg[i] = false;
  26.             }
  27.         }
  28.         int spectresize = (int)(accuracyMS*frequenzyMS);
  29.  
  30.         double[] tmp = new double[spectresize];
  31.         boolean isChanging = true;
  32.         double currentDistance = 0, pointchanging = 0, avgVal = 0;
  33.         byte toleranceFacCtr = 0;
  34.         for(int i = 0, j = 0; i <= data.length;i++,j++){
  35.             //lastDistance = currentDistance;
  36.             if(j < spectresize && i < data.length) tmp[j] = data[i];
  37.             else {
  38.                 currentDistance = avgVal;
  39.                 avgVal = avg(tmp);
  40.                 currentDistance = abs(avgVal - currentDistance);
  41.                 if(currentDistance <= distanceAbs) {
  42.                     toleranceFacCtr = toleranceFacCtr < toleranceFactor ? ++toleranceFacCtr : toleranceFactor;
  43.                     System.out.println(toleranceFacCtr);
  44.                     if(toleranceFacCtr == toleranceFactor) {
  45.                         if (isChanging) pointchanging = i;
  46.                         System.out.println(" distance: " + currentDistance);
  47.                         System.out.println(" avgval: " + avgVal);
  48.                         System.out.println(" was not changing at: " + i);
  49.                         isChanging = false;
  50.                     }
  51.                 }
  52.                 else {
  53.                     toleranceFacCtr = 0;
  54.                 }
  55.                 j = 0;
  56.             }
  57.         }
  58.     }
  59.  
  60.     private double abs(double i){return i < 0 ? -i : i;}
  61.    
  62.  
  63.     private double avg(double[] data){
  64.         int tmp = 0;
  65.         for(int i = 0; i < data.length;i++){
  66.             tmp += data[i];
  67.         }
  68.        return tmp / data.length;
  69.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement