String dataString = "0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0, 0, 0, 0, 0, 0, 0, 0.4, 0.2, 8, 7.6, 0, 0, 0, 0, 0, 17.8, 18.6, 0, 0, 13.2, 4.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 21.6, 0, 0, 20, 2.4, 0, 0, 0, 0, 0, 0, 8, 0.4, 0, 0, 0, 0, 0, 1.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.6, 0.2, 0, 0, 0, 0.4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.2, 0.2, 0, 0, 0, 0, 0, 0, 4, 0, 1.6, 0, 0.8, 5.2, 0, 0, 0, 0.4, 0.8, 16, 0.6, 4.6, 0.4, 0, 0, 0.6, 0.2, 0, 0, 0.2, 0, 0, 7.2, 0.4, 3.4, 24.2, 2.8, 17, 0, 1.2, 0.4, 0.2, 0.2, 18.4, 0, 0.2, 11.4, 1.6, 3.8, 5.2, 2.4, 1.8, 0, 0, 0, 0, 2.4, 4, 0, 0, 0.6, 3.8, 11.8, 2.6, 20, 0.6, 0, 2.6, 0, 0, 1.6, 2.6, 1.4, 0, 0.2, 37.6, 2.4, 1.6, 0, 0, 6.6, 1.4, 6, 7, 0.6, 0.2, 0, 0, 0, 0, 5, 0, 0.6, 4.2, 0, 11.4, 8.8, 10.4, 0.2, 0, 0, 3.8, 11, 1.8, 0, 0.4, 0, 0, 0, 0, 0.6, 3.6, 8.2, 0, 0, 0, 0, 0, 0.8, 0, 16.8, 7, 0.2, 0, 0, 0, 0, 0, 0, 0, 1.6, 5.8, 1, 0.2, 0.2, 0.4, 1, 0, 0, 0, 1.2, 30.4, 0.2, 0, 0, 6.2, 15.6, 16.6, 0, 0, 2.4, 0.4, 0.4, 1.6, 0, 0, 2.4, 2, 0, 0, 0, 37.8, 12.2, 4.2, 0, 27.6, 11.8, 0, 0, 0, 0, 0, 2, 0.4, 0.8, 0.6, 0, 0, 1.2, 14.2, 4.2, 3.8, 0, 9.4, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0.6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 16.4, 1.8, 0, 0, 0, 0, 0, 0, 0, 0.8, 0.2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4.6, 0, 0, 8, 0.8, 0, 0, 0, 0, 0.4, 0, 0, 0.4, 0, 0, 2.2, 0, 0, 0, 0, 0, 0.2, 5.8, 61.2, 3, 0.2, 0"; // Function to convert the string data to an ArrayList of Floats ArrayList stringToFloatList(String data) { String[] stringArray = split(data, ","); ArrayList floatList = new ArrayList(); for (int i = 0; i < stringArray.length; i++) { floatList.add(float(trim(stringArray[i]))); } return floatList; } //Function to sanitise a ArayList of Floats ArrayList sanitise(ArrayList floatList) { ArrayList sanitisedData = new ArrayList(); for (int i=0; i< floatList.size(); i++) { if (floatList.get(i) != float(0)) { sanitisedData.add(floatList.get(i)); } } return sanitisedData; } //Function to find mean float mean(ArrayList array){ float sum=0; float mean=0; for (int i=0; i array){ float min = array.get(0); for (int i =1; i< array.size(); i++){ if(array.get(i) < min){ min = array.get(i); } } return min; } //function to find maximum float max(ArrayList array){ float max = array.get(0); for (int i =1; i< array.size(); i++){ if(array.get(i) > max){ max = array.get(i); } } return max; } //Function to find median ArrayList median(ArrayList originalArray){ ArrayList orderedArray = new ArrayList(); ArrayList median = new ArrayList(); ArrayList array = new ArrayList(originalArray); float min = 0; float arrayLength = array.size(); while( array.size() > 0){ min = min(array); orderedArray.add(min); array.remove(Float.valueOf(min)); } if (arrayLength %2 == 1){ median.add(orderedArray.get(int((arrayLength -1 )/2))); } else{ median.add(orderedArray.get(int(arrayLength/2-1))); median.add(orderedArray.get(int(arrayLength/2))); } return median; } //FUnction to find Standard deviation float standardDeviation(ArrayList array){ float mean = mean(array); float sum = 0; int arrayLength = array.size(); float standardDev = 0; for (int i =0; i< array.size(); i++){ sum = sum + (array.get(i)-mean)*(array.get(i)-mean); } standardDev = sqrt(sum/arrayLength); return standardDev; } // Function to find the index at which a value is in an array int findIndex(float[] array, float value) { for (int i = 0; i < array.length; i++) { if (array[i] == value) { return i; } } return -1; // Return -1 if the value is not found } //Function to find the mode ArrayList mode(ArrayList array){ ArrayList values = new ArrayList(); for(int l=0; l< array.size(); l++){ if(!values.contains(array.get(l))){ values.add(array.get(l)); } } float[] times = new float[values.size()]; for(int i=0; i < values.size() ; i++){ for(int j=0; j< array.size(); j++){ if(values.get(i) == array.get(j)){ times[i] = times[i]+1; } } } ArrayList mode = new ArrayList(); float max = 0; int condition = 0; int index = 0; while (condition == 0){ max = max(times); index = findIndex(times, max); mode.add(values.get(index)); times[index]=0; if( max(times) == max){ condition = 1; } } return mode; } void setup() { size(520, 240); background(255); strokeWeight(height/200); fill(0); textSize(width/30); ArrayList floatList = stringToFloatList(dataString); ArrayList sanitisedData = sanitise(floatList); float mean = mean(sanitisedData); float min = min(sanitisedData); ArrayList median = median(sanitisedData); float standardDev = standardDeviation(sanitisedData); ArrayList mode = mode(sanitisedData); println("original array: " , floatList); println("sanitised data: ", sanitisedData); text("Analysis results: ", 20, height/10); text("value: ", width/2, height/10); println("mean: ", mean); text("mean: ", 20, height/10 + height/5); text(mean, width/2, height/10 +height/5); println("median: ", median); text("median: ", 20, height/10 + 2*height/5); for (int i = 0; i