JSci.maths
Class ArrayMath

java.lang.Object
  extended by JSci.maths.AbstractMath
      extended by JSci.maths.ArrayMath

public final class ArrayMath
extends AbstractMath

Arrays are faster than object, so this class is here to take full advantage of arrays without encapsulation. All methods are safe, that is, they create copies of arrays whenever necessary This makes for slower methods, but the programmer can always define his own methods optimized for performance.

Author:
Daniel Lemire

Method Summary
static double[] abs(double[] v)
          Takes the absolute value of each component of an array.
static double[][] abs(double[][] v)
          Takes the absolute value of each component of an array.
static int[] abs(int[] v)
          Takes the absolute value of each component of an array.
static int[][] abs(int[][] v)
          Takes the absolute value of each component of an array.
static double[] add(double[] w, double a)
          Add a scalar to every element in the array.
static double[] add(double[] a, double[] b)
          Add the two arrays together (componentwise).
static double[] add(double[] w, double a, double[] v, int p)
          Add to an array w, a time v where a is a scalar...
static int[] add(int[] w, double a, int[] v, int p)
          Add to an array w, a time v where a is a scalar...
static int[] add(int[] w, int a)
          Add a scalar to every element in the array.
static int[] add(int[] a, int[] b)
          Add the two arrays together (componentwise).
static Complex[] apply(ComplexMapping m, Complex[] v)
          Apply a map to every component of an array.
static Complex[][] apply(ComplexMapping m, Complex[][] v)
          Apply a map to every component of an array.
static double[] apply(Mapping m, double[] v)
          Apply a map to every component of an array.
static double[][] apply(Mapping m, double[][] v)
          Apply a map to every component of an array.
static double[] copy(double[] v)
          Return a copy of the array.
static double[][] copy(double[][] v)
          Return a copy of the array.
static int[] copy(int[] v)
          Return a copy of the array.
static int[][] copy(int[][] v)
          Return a copy of the array.
static double correlation(double[] v1, double[] v2)
          Compute the (linear) correlation between two arrays.
static double correlation(int[] v1, int[] v2)
          Compute the (linear) correlation between two arrays.
static double covariance(double[] v1, double[] v2)
          Compute the covariance.
static double covariance(int[] v1, int[] v2)
           
static boolean equals(double[] a, double[] b)
          Deprecated.  
static boolean equals(int[] a, int[] b)
          Deprecated.  
static double[] extract(int k0, int k1, double[] invect)
          Extract a sub-array (will invert the resulting array if k0 > k1).
static int[] extract(int k0, int k1, int[] invect)
          Extract a sub-array (will invert the resulting array if k0 > k1).
static double[] invert(double[] v)
          Invert an array from left to right.
static int[] invert(int[] v)
          Invert an array from left to right.
static double mass(double[] v)
          Return the sum of the elements of the array.
static int mass(int[] v)
          Return the sum of the elements of the array.
static double max(double[] v)
          Return the maximum of an array.
static double max(double[][] v)
          Return the maximum of an array.
static int max(int[] v)
          Return the maximum of an array.
static int max(int[][] v)
          Return the maximum of an array.
static double mean(double[] v)
          Compute the mean.
static double mean(int[] v)
          Compute the mean.
static double median(double[] v)
          Compute the median of an array.
static double median(int[] v)
          Compute the median of an array.
static double min(double[] v)
          Return the minimum of an array.
static double min(double[][] v)
          Return the minimum of an array.
static int min(int[] v)
          Return the minimum of an array.
static int min(int[][] v)
          Return the minimum of an array.
static double[] mod(Complex[] v)
          Return the componentwise modulus of an array of Complex numbers.
static double[][] mod(Complex[][] v)
          Return the componentwise modulus of an array of Complex numbers.
static double norm(double[] data)
          Compute the L2 norm of an array (Euclidean norm or "length").
static double norm(int[] data)
          Compute the L2 norm of an array (Euclidean norm or "length").
static double[] normalize(double[] v)
          Renormalize the array so that its L2 norm is 1 (up to computational errors).
static double[] padding(int n0, int pos, double[] v)
          Fills in with zero to get to the desired length; original array with be at the specified position.
static int[] padding(int n0, int pos, int[] v)
          Fills in with zeroes to get to the specified length; original array with be at the specified position
static double percentile(double[] v, double p)
          Gives the percentile of an array
static double percentile(int[] v, double p)
          Gives the percentile of an array.
static void print(double[] v)
          Print to screen an array.
static void print(double[][] v)
          Print to screen an array.
static void print(int[] v)
          Print to screen an array.
static void print(int[][] v)
          Print to screen an array.
static double[] range(double b)
          Generate an array going for 0 to b with steps of size 1.
static double[] range(double a, double b)
          Generate an array going for a to b inclusively with steps of size 1.
static double[] range(double a, double b, double step)
          Generate an array going for a to b with steps of size step.
static int[] range(int b)
          Generate an array going for 0 to b with steps of size 1.
static int[] range(int a, int b)
          Generate an array going for a to b with steps of size 1.
static int[] range(int a, int b, int step)
           
static double[] scalarMultiply(double a, double[] v)
          Multiply every component of an array by a scalar.
static double[] scalarMultiply(double a, int[] v)
          Multiply every component of an array by a scalar.
static double[] scalarMultiplyFast(double a, double[] v)
          Fast scalar multiplication for sparse arrays.
static double[] scalarMultiplyFast(double a, int[] v)
          Fast scalar multiplication for sparse arrays.
static double scalarProduct(double[][] w0, double[][] w1)
          Compute the scalar product of two array as if they were matrices.
static double scalarProduct(double[] w0, double[] w1)
          Compute the scalar product of two array as if they were vectors.
static double scalarProduct(int[][] w0, int[][] w1)
          Compute the scalar product of two array as if they were matrices.
static int scalarProduct(int[] w0, int[] w1)
          Compute the scalar product of two array as if they were vectors.
static double[] setLengthFromBeginning(double[] data, int length)
          Set an array to the specified length scraping or padding the end if necessary.
static int[] setLengthFromBeginning(int[] data, int length)
          Set an array to the specified length scraping or padding the end if necessary.
static double[] setLengthFromEnd(double[] data, int length)
          Set an array to the specified length scraping or padding the beginning if necessary.
static int[] setLengthFromEnd(int[] data, int length)
          Set an array to the specified length scraping or padding the beginning if necessary.
static double[] sortMaxToMin(double[] v)
          Return a sorted array from the maximum to the minimum value.
static int[] sortMaxToMin(int[] v)
          Return a sorted array from the maximum to the minimum value.
static double[] sortMinToMax(double[] v)
          Return a sorted array from the minimum to the maximum value.
static int[] sortMinToMax(int[] v)
          Return a sorted array from the minimum to the maximum value.
static double standardDeviation(double[] v)
          Compute the standard deviation of an array.
static double standardDeviation(int[] v)
          Return the standard deviation of an array.
static double[] subtract(double[] a, double[] b)
          Subtract the two arrays together (componentwise)
static int[] subtract(int[] a, int[] b)
          Subtract the two arrays together (componentwise).
static double sumSquares(double[] data)
          Sum the squares of all components; also called the energy of the array.
static double sumSquares(double[][] data)
          Sum the squares of all components; also called the energy of the array.
static int sumSquares(int[] data)
          Sum the squares of all components; also called the energy of the array.
static int sumSquares(int[][] data)
          Sum the squares of all components; also called the energy of the array.
static java.lang.String toString(double[] array)
          Returns a comma delimited string representing the value of the array.
static java.lang.String toString(double[][] array)
          Returns a comma delimited string representing the value of the array.
static java.lang.String toString(int[] array)
          Returns a comma delimited string representing the value of the array.
static java.lang.String toString(int[][] array)
          Returns a comma delimited string representing the value of the array.
static double[][] transpose(double[][] M)
          Takes the transpose of an array (like the matrix operation).
static int[][] transpose(int[][] M)
          Takes the transpose of an array (like the matrix operation).
static double variance(double[] v)
          Compute the variance.
static double variance(int[] v)
          Compute the variance.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

apply

public static double[] apply(Mapping m,
                             double[] v)
Apply a map to every component of an array.


apply

public static double[][] apply(Mapping m,
                               double[][] v)
Apply a map to every component of an array.


apply

public static Complex[] apply(ComplexMapping m,
                              Complex[] v)
Apply a map to every component of an array.


apply

public static Complex[][] apply(ComplexMapping m,
                                Complex[][] v)
Apply a map to every component of an array.


normalize

public static double[] normalize(double[] v)
Renormalize the array so that its L2 norm is 1 (up to computational errors).


setLengthFromEnd

public static double[] setLengthFromEnd(double[] data,
                                        int length)
Set an array to the specified length scraping or padding the beginning if necessary.


setLengthFromBeginning

public static double[] setLengthFromBeginning(double[] data,
                                              int length)
Set an array to the specified length scraping or padding the end if necessary.


copy

public static double[] copy(double[] v)
Return a copy of the array.


copy

public static double[][] copy(double[][] v)
Return a copy of the array.


variance

public static double variance(double[] v)
Compute the variance.


covariance

public static double covariance(double[] v1,
                                double[] v2)
Compute the covariance.


correlation

public static double correlation(double[] v1,
                                 double[] v2)
Compute the (linear) correlation between two arrays. Squaring this result and multiply by 100 gives you the percentage of correlation.


mean

public static double mean(double[] v)
Compute the mean.


standardDeviation

public static double standardDeviation(double[] v)
Compute the standard deviation of an array.


sortMinToMax

public static double[] sortMinToMax(double[] v)
Return a sorted array from the minimum to the maximum value.


sortMaxToMin

public static double[] sortMaxToMin(double[] v)
Return a sorted array from the maximum to the minimum value.


percentile

public static double percentile(double[] v,
                                double p)
Gives the percentile of an array

Parameters:
p - percentile, must be between 0 and 1
Throws:
java.lang.IllegalArgumentException - if parameter. p is not between 0 and 1.

median

public static double median(double[] v)
Compute the median of an array.


equals

public static boolean equals(double[] a,
                             double[] b)
Deprecated. 

Use java.util.Arrays instead. Check if two arrays are equal with a tolerance.


abs

public static double[] abs(double[] v)
Takes the absolute value of each component of an array.


abs

public static double[][] abs(double[][] v)
Takes the absolute value of each component of an array.


max

public static double max(double[] v)
Return the maximum of an array.


max

public static double max(double[][] v)
Return the maximum of an array.


min

public static double min(double[] v)
Return the minimum of an array.


min

public static double min(double[][] v)
Return the minimum of an array.


mod

public static double[] mod(Complex[] v)
Return the componentwise modulus of an array of Complex numbers.


mod

public static double[][] mod(Complex[][] v)
Return the componentwise modulus of an array of Complex numbers.


norm

public static double norm(double[] data)
Compute the L2 norm of an array (Euclidean norm or "length").


sumSquares

public static double sumSquares(double[] data)
Sum the squares of all components; also called the energy of the array.


sumSquares

public static double sumSquares(double[][] data)
Sum the squares of all components; also called the energy of the array.


scalarProduct

public static double scalarProduct(double[] w0,
                                   double[] w1)
Compute the scalar product of two array as if they were vectors.

Throws:
java.lang.IllegalArgumentException - if the don't have the same length

scalarProduct

public static double scalarProduct(double[][] w0,
                                   double[][] w1)
Compute the scalar product of two array as if they were matrices.

Throws:
java.lang.IllegalArgumentException - if the don't have the same length

extract

public static double[] extract(int k0,
                               int k1,
                               double[] invect)
Extract a sub-array (will invert the resulting array if k0 > k1).

Parameters:
k0 - location of the first component
k1 - location of the last component

invert

public static double[] invert(double[] v)
Invert an array from left to right.


padding

public static double[] padding(int n0,
                               int pos,
                               double[] v)
Fills in with zero to get to the desired length; original array with be at the specified position.

Parameters:
n0 - length of the new array.
pos - position of the old array.

add

public static double[] add(double[] w,
                           double a,
                           double[] v,
                           int p)
Add to an array w, a time v where a is a scalar... since v can be smaller then w, we must specified the position at which v will be added.

Parameters:
a - scalar.
p - position.

add

public static double[] add(double[] w,
                           double a)
Add a scalar to every element in the array.


transpose

public static double[][] transpose(double[][] M)
Takes the transpose of an array (like the matrix operation).

Throws:
java.lang.IllegalArgumentException - if the array is not a matrix

range

public static double[] range(double a,
                             double b,
                             double step)
Generate an array going for a to b with steps of size step. If it can't get to the value b in a finite number of steps, it gets as close as possible (a can be larger or smaller than b)

Parameters:
step - size of steps, must be positive.
a - first value of array.
b - last value of array.
Throws:
java.lang.IllegalArgumentException - if step is negative of if a=b.

range

public static double[] range(double a,
                             double b)
Generate an array going for a to b inclusively with steps of size 1. a can be smaller or larger than b.


range

public static double[] range(double b)
Generate an array going for 0 to b with steps of size 1. 0 can be smaller or larger than b.


add

public static double[] add(double[] a,
                           double[] b)
Add the two arrays together (componentwise).

Throws:
java.lang.IllegalArgumentException - if the two arrays don't have the same length.

subtract

public static double[] subtract(double[] a,
                                double[] b)
Subtract the two arrays together (componentwise)

Throws:
java.lang.IllegalArgumentException - if the two arrays don't have the same length.

scalarMultiply

public static double[] scalarMultiply(double a,
                                      double[] v)
Multiply every component of an array by a scalar.


toString

public static java.lang.String toString(double[] array)
Returns a comma delimited string representing the value of the array.


toString

public static java.lang.String toString(double[][] array)
Returns a comma delimited string representing the value of the array.


mass

public static double mass(double[] v)
Return the sum of the elements of the array.


scalarMultiplyFast

public static double[] scalarMultiplyFast(double a,
                                          double[] v)
Fast scalar multiplication for sparse arrays.


print

public static void print(double[] v)
Print to screen an array.


print

public static void print(double[][] v)
Print to screen an array.


setLengthFromEnd

public static int[] setLengthFromEnd(int[] data,
                                     int length)
Set an array to the specified length scraping or padding the beginning if necessary.


setLengthFromBeginning

public static int[] setLengthFromBeginning(int[] data,
                                           int length)
Set an array to the specified length scraping or padding the end if necessary.


copy

public static int[] copy(int[] v)
Return a copy of the array.


copy

public static int[][] copy(int[][] v)
Return a copy of the array.


variance

public static double variance(int[] v)
Compute the variance.


covariance

public static double covariance(int[] v1,
                                int[] v2)

correlation

public static double correlation(int[] v1,
                                 int[] v2)
Compute the (linear) correlation between two arrays. Squaring this result and multiply by 100 gives you the percentage of correlation.


mean

public static double mean(int[] v)
Compute the mean.


standardDeviation

public static double standardDeviation(int[] v)
Return the standard deviation of an array.


sortMinToMax

public static int[] sortMinToMax(int[] v)
Return a sorted array from the minimum to the maximum value.


sortMaxToMin

public static int[] sortMaxToMin(int[] v)
Return a sorted array from the maximum to the minimum value.


toString

public static java.lang.String toString(int[] array)
Returns a comma delimited string representing the value of the array.


toString

public static java.lang.String toString(int[][] array)
Returns a comma delimited string representing the value of the array.


percentile

public static double percentile(int[] v,
                                double p)
Gives the percentile of an array.

Parameters:
p - percentile, must be between 0 and 1
Throws:
java.lang.IllegalArgumentException - if parameter p is not between 0 and 1.

median

public static double median(int[] v)
Compute the median of an array.


equals

public static boolean equals(int[] a,
                             int[] b)
Deprecated. 

Use java.util.Arrays instead. Check if two arrays are equal.


abs

public static int[] abs(int[] v)
Takes the absolute value of each component of an array.


abs

public static int[][] abs(int[][] v)
Takes the absolute value of each component of an array.


max

public static int max(int[] v)
Return the maximum of an array.


max

public static int max(int[][] v)
Return the maximum of an array.


min

public static int min(int[] v)
Return the minimum of an array.


min

public static int min(int[][] v)
Return the minimum of an array.


norm

public static double norm(int[] data)
Compute the L2 norm of an array (Euclidean norm or "length").


sumSquares

public static int sumSquares(int[] data)
Sum the squares of all components; also called the energy of the array.


sumSquares

public static int sumSquares(int[][] data)
Sum the squares of all components; also called the energy of the array.


scalarProduct

public static int scalarProduct(int[] w0,
                                int[] w1)
Compute the scalar product of two array as if they were vectors.

Throws:
java.lang.IllegalArgumentException - if the don't have the same length.

scalarProduct

public static double scalarProduct(int[][] w0,
                                   int[][] w1)
Compute the scalar product of two array as if they were matrices.

Throws:
java.lang.IllegalArgumentException - if the don't have the same length.

extract

public static int[] extract(int k0,
                            int k1,
                            int[] invect)
Extract a sub-array (will invert the resulting array if k0 > k1).

Parameters:
k0 - location of the first component.
k1 - location of the last component.

invert

public static int[] invert(int[] v)
Invert an array from left to right.


padding

public static int[] padding(int n0,
                            int pos,
                            int[] v)
Fills in with zeroes to get to the specified length; original array with be at the specified position

Parameters:
n0 - length of the new array.
pos - position of the old array.

add

public static int[] add(int[] w,
                        double a,
                        int[] v,
                        int p)
Add to an array w, a time v where a is a scalar... since v can be smaller then w, we must specified the position at which v will be added.

Parameters:
a - scalar.
p - position.
w - longer array.
v - shorter array.
Throws:
java.lang.IllegalArgumentException - if the second array is not shorter than the first one.

add

public static int[] add(int[] w,
                        int a)
Add a scalar to every element in the array.


range

public static int[] range(int a,
                          int b)
Generate an array going for a to b with steps of size 1. a can be smaller or larger than b.


range

public static int[] range(int b)
Generate an array going for 0 to b with steps of size 1. 0 can be smaller or larger than b.


range

public static int[] range(int a,
                          int b,
                          int step)

transpose

public static int[][] transpose(int[][] M)
Takes the transpose of an array (like the matrix operation).

Throws:
java.lang.IllegalArgumentException - if the array is not a matrix

add

public static int[] add(int[] a,
                        int[] b)
Add the two arrays together (componentwise).

Throws:
java.lang.IllegalArgumentException - if the two arrays don't have the same length.

subtract

public static int[] subtract(int[] a,
                             int[] b)
Subtract the two arrays together (componentwise).

Throws:
java.lang.IllegalArgumentException - if the two arrays don't have the same length.

mass

public static int mass(int[] v)
Return the sum of the elements of the array.


scalarMultiply

public static double[] scalarMultiply(double a,
                                      int[] v)
Multiply every component of an array by a scalar.


scalarMultiplyFast

public static double[] scalarMultiplyFast(double a,
                                          int[] v)
Fast scalar multiplication for sparse arrays.


print

public static void print(int[] v)
Print to screen an array.


print

public static void print(int[][] v)
Print to screen an array.