Here you can find the source of stdDev(double[] array)
public static double stdDev(double[] array)
//package com.java2s; /******************************************************************************* * Copyright 2013 Karlsruhe Institute of Technology. This Work has been partially supported by the EIT ICT Labs funded research project Towards a Mobile Cloud (activity CLD 12206). * /* www . ja va 2 s .co m*/ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ public class Main { public static double stdDev(double[] array) { double mean = 0.0; double total = 0.0; for (int m = 0; m < array.length; m++) { total += array[m]; } mean = total / array.length; return stdDev(array, mean); } public static double stdDev(double[][] matrix, int column) { double mean = 0.0; double total = 0.0; for (int m = 0; m < matrix.length; m++) { total += matrix[m][column]; } mean = total / matrix.length; return stdDev(matrix, column, mean); } /** * Return the standard deviation of all the elements in array * * @param array * @param mean * @return */ public static double stdDev(double[] array, double mean) { return stdDev(array, mean, array.length); } /** * Standard deviation for the first arrayLength terms of array * * @param array * @param mean * @param arrayLength * @return */ public static double stdDev(double[] array, double mean, int arrayLength) { if (arrayLength == 0) { return 0.0; } double sumSqs = 0.0; for (int m = 0; m < arrayLength; m++) { sumSqs += (array[m] - mean) * (array[m] - mean); } double std = sumSqs / (arrayLength - 1); std = Math.sqrt(std); return std; } /** * Compute the standard deviation along the given column, with the known * given mean. * * @param matrix * @param column * @param mean * @return */ public static double stdDev(double[][] matrix, int column, double mean) { if (matrix.length == 0) { return 0.0; } double sumSqs = 0.0; for (int m = 0; m < matrix.length; m++) { sumSqs += (matrix[m][column] - mean) * (matrix[m][column] - mean); } double std = sumSqs / (matrix.length - 1); std = Math.sqrt(std); return std; } /** * Compute the standard deviation across all values in the 2D matrix * * @param matrix * @return */ public static double stdDev(double[][] matrix) { double mean = mean(matrix); return stdDev(matrix, mean); } /** * Compute the standard deviation across all values in the 2D matrix * * @param matrix * @param mean * @return */ public static double stdDev(double[][] matrix, double mean) { if (matrix.length == 0) { return 0.0; } double sumSqs = 0.0; for (int m = 0; m < matrix.length; m++) { for (int c = 0; c < matrix[m].length; c++) { sumSqs += (matrix[m][c] - mean) * (matrix[m][c] - mean); } } double std = sumSqs / ((matrix.length * matrix[0].length) - 1); std = Math.sqrt(std); return std; } public static double mean(int[] input) { return sum(input) / (double) input.length; } public static double mean(double[] input) { return sum(input) / input.length; } public static double mean(double[] input, int startIndex, int length) { return sum(input, startIndex, length) / length; } public static double mean(double[][] input) { return sum(input) / (input.length * input[0].length); } /** * Compute the mean along the given column * * @param input * @param column * @return */ public static double mean(double[][] input, int column) { return sum(input, column) / input.length; } public static double sum(double[] input) { double total = 0; for (int i = 0; i < input.length; i++) { total += input[i]; } return total; } public static double sum(double[] input, int startIndex, int length) { double total = 0; for (int i = startIndex; i < startIndex + length; i++) { total += input[i]; } return total; } public static double sum(double[][] input) { double total = 0; for (int i = 0; i < input.length; i++) { for (int j = 0; j < input[i].length; j++) { total += input[i][j]; } } return total; } public static double sum(double[][] input, int column) { double total = 0; for (int i = 0; i < input.length; i++) { total += input[i][column]; } return total; } public static int sum(int[] input) { int total = 0; for (int i = 0; i < input.length; i++) { total += input[i]; } return total; } public static int sum(int[][] input) { int total = 0; for (int i = 0; i < input.length; i++) { for (int j = 0; j < input[i].length; j++) { total += input[i][j]; } } return total; } }