| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341 |
- import java.util.ArrayList;
- import java.util.Collections;
- public class StatisticsCalculator {
-
- public static double max(ArrayList<Double> array)
- {
- double max = 0;
-
- for(double waarde : array){
- if(waarde > max){
- max = waarde;
- }
- }
-
- return max;
- }
-
- public static double min(ArrayList<Double> array)
- {
- double min = array.get(0);
-
- for(double waarde : array){
- if(waarde < min){
- min = waarde;
- }
- }
-
- return min;
- }
-
- public static double avg(ArrayList<Double> array)
- {
- double avg = 0;
-
- for(double waarde : array){
- avg += waarde;
- }
- avg /= array.size();
- return avg;
- }
-
- public static double median(ArrayList<Double> array2){
- ArrayList<Double> array = new ArrayList<Double>();
-
- for(double db : array2)
- {
- array.add(db);
- }
-
- Collections.sort(array); //sort the array
-
- double median = 0;
- int middle = array.size()/2; //calculate the middle of the array
- if (array.size()%2 == 1) { //check if the array is even or uneven
- median = array.get(middle);
- } else {
- median = (array.get(middle-1) + array.get(middle+1)) / 2;
- }
- return median;
- }
-
- public static double modus(ArrayList<Double> array){
- double maxValue = 0;
- int maxCount = 0;
-
- for (int i = 0; i < array.size(); ++i){ //cycle through every number in the array
- int count = 0;
- for (int j = 0; j < array.size(); ++j) {
- if (array.get(j) == array.get(i)){
- ++count;
- }
- }
- if (count > maxCount) { //if the count is bigger then the max count, it will be the temporary modus
- maxCount = count;
- maxValue = array.get(i);
- }
- }
- return maxValue;
- }
-
- public static double afwijking(ArrayList<Double> array){
- double mediaan = StatisticsCalculator.median(array);
- double afwijking = 0;
- for(double m :array){
- afwijking += (mediaan-m)*(mediaan-m);
- }
- afwijking /= array.size();
- afwijking = Math.sqrt(afwijking);
- return afwijking;
- }
-
- public static double graadDagen(ArrayList<Double> array)
- {
- ArrayList<Double> avgTempDag = new ArrayList<Double>();
- int i = 0;
- double avgTemp = 0;
-
- //Breken de gemiddelde temperatuur per dag.
- for(double db : array)
- {
- i++;
- if(i%1440==0)
- {
- avgTempDag.add(avgTemp);
- avgTemp = 0;
- }
- avgTemp += db;
- }
- avgTemp /= array.size();
-
-
- int graaddagen = 0;
- int periodeBegin = 0;
- int periodeEind = 1439;
-
- for(int j = 0; j < avgTempDag.size(); j++)
- {
- if(avgTemp < 18)
- {
- graaddagen += 18 - avgTemp;
- }
- }
-
- periodeBegin += 1400;
- periodeEind += 1400;
-
- //graaddagen afronden
-
- return graaddagen;
- }
-
- public static int[] langsteDroogstePeriode(ArrayList<Double> array)
- {
- return langsteDroogstePeriodeMetMax(array, 0);
- }
-
- public static int[] langsteDroogstePeriodeMetMax(ArrayList<Double> array, int maxNeerslag)
- {
- int[] index = new int[2];
- int index1 = 0;
- int index2 = 0;
-
- //Code
-
- index[0] = index1;
- index[1] = index2;
- return index;
- }
-
- public static int[] langsteRegenPeriode(ArrayList<Double> array)
- {
- ArrayList<Double> rainday = new ArrayList<Double>();
-
- int i = 0;
- double longRainday = 0;
-
- // Bereken de Rainrate per dag
- for(double rain : array)
- {
- i++;
- if (i% 1440 ==0)
- {
- rainday.add(longRainday);
- longRainday = 0;
- }
-
- if (rain > longRainday)
- {
- longRainday = rain;
- }
- }
- int[] index = new int[2];
- int index1 = 0;
- int index2 = 0;
-
- int index1_1 = 0;
-
- boolean regen = false;
-
- int p = 0;
- int maxDays = 0;
-
- for(int t = 0; t < rainday.size(); t++)
- {
- if (rainday.get(t) > 0 )
- {
- p++;
-
- if(!regen)
- {
- regen = true;
- index1_1 = t;
- }
- else
- {
- if(p > maxDays)
- {
- maxDays = p;
- index1 = index1_1;
- index2 = t-1;
- regen=false;
- }
- p = 0;
- }
- }
- }
-
- index[0] = index1*1440;
- if(index2<0)
- {
- index2 =0;
- }
- index[1] = index2*1440;
- return index;
- }
-
- public static short maximaleRegenPeriode(ArrayList<Short> array)
- {
- short regen = 0;
- ArrayList<Short> regenPerUur = new ArrayList<Short>();
-
- for(int i=0; i<array.size();i++)
- {
- if(i%60==0)
- {
- regen /= 60;
- regenPerUur.add(regen);
- regen = 0;
- }
-
- regen += array.get(i);
- }
-
-
- short totaleRegen = 0;
-
- for(short sh : regenPerUur)
- {
- totaleRegen += sh;
- }
-
- return totaleRegen;
- }
-
- public static int[] langsteZomersePeriode(ArrayList<Short> array)
- {
-
- ArrayList<Double> maxTempDag = new ArrayList<Double>();
- int i = 0;
- short maxTemp = 0;
-
- //Bereken de maximale temperatuur per dag.
- for(short db : array)
- {
- i++;
- if(i%1440==0)
- {
- maxTempDag.add( (double) maxTemp);
- maxTemp = 0;
- }
-
- if(db > maxTemp)
- {
- maxTemp = db;
- }
- }
- //Creer een array met twee indexen
- int[] index = new int[2];
- int index1 = 0;
- int index2 = 0;
-
- //Een tijdelijke index om bij te houden wat de index was in het geval dat de vorige groter was.
- int index1_1 = 0;
-
- //Een boolean
- boolean zomers = false;
-
- int p = 0;
- int maxDays = 0;
-
- //Doorloop je maximale temperaturen en zoek de langste periode
- for(int t=0; t<maxTempDag.size(); t++) {
- if(maxTempDag.get(t) > 25) {
- p++;
- if(!zomers)
- {
- zomers = true;
- index1_1 = t;
- }
- }
- else {
- if(p > maxDays) {
- maxDays = p;
- index1 = index1_1;
- index2 = t-1;
- zomers=false;
- }
- p=0;
- }
- }
- //Het terugsturen van de gevonden indexen. Je doet ze keer 1440 omdat je bij het berekenen van
- //de temperatuur per dag je het in stukken van 1440 samenvoegde.
- index[0] = index1*1440;
- if(index2<0){index2=0;}
- index[1] = index2*1440;
-
- return index;
- }
-
- public static int[] langsteHitteGolfPeriode(ArrayList<Double> array)
- {
- int[] index = new int[2];
- int index1 = 0;
- int index2 = 0;
-
- //Code
-
- index[0] = index1;
- index[1] = index2;
- return index;
- }
-
- public static int[] langsteTempStijgingPeriode(ArrayList<Double> array)
- {
- int[] index = new int[2];
- int index1 = 0;
- int index2 = 0;
-
- //Code
-
- index[0] = index1;
- index[1] = index2;
- return index;
- }
-
- }
|